□ 파워빌드 - 엑셀 파일 DataWindow에 업로드 방법
검색시 파워빌드에서 엑셀파일을 datawindow에 업로드 하는 방법은 많이 나오는데요.
폴더에 있는 엑셀 파일을 한번에 업로드 하는방법이 없어서 만들어보았습니다.
저 같은 경우는 엑셀 파일을 datawindow에 업로드시 엑셀에 없는 필드를 하나 추가 삽입할
필요가 있어서 조금 수정 했습니다.
소스는 아래와 같습니다.
/*
엑셀파일 위치 : C:\SSIS\ 폴더에 엑셀 파일 저장
폴더에 있는 엑셀파일을 listbox에 읽어온 후
listbox에있는 파일명을 순차적으로 업로드함
*/
long li_Result, li_tot, li_row1
string s_FileName1, s_FileName2
lb_1.DirList("C:\SSIS\*.xls",0) // lb_1는 listbox 임
li_tot = lb_1.TotalItems() //listbox에 있는 총 아이템개수(즉 폴더에 있는 엑셀 파일 개수)
For li_row1 = 1 to li_tot
s_FileName1 ='';
s_FileName1 = lb_1.Text(li_row1)
s_FileName2 = Left(s_FileName1,8)
s_FileName1 = "C:\SSIS\"+s_FileName1;
//---------------------------------------------------------------------------------
//1.변수선언
oleobject ole_excel,xlsub,xlApp, xlBook, xlSheet
integer net , ll_value , ll_return , ll_error_cnt ,ll_error_cnt1
string ls_file, ls_name, ls_txt_file
long ll_ins_row
long ll_tot_Row , ll_tot_col , ll_row
String ls_ordernum, ls_ShopName, ls_Prod_Nm, ls_Option, ls_InputDay
String ls_Reciver, ls_ZipCode, ls_Addr, ls_Tel, ls_HP
String ls_Memo, ls_Admin_Memo, ls_Cust_Nm
Integer li_OrderQty, li_HsQty
//변수 초기화
SetPointer (HourGlass!)
ll_error_cnt =0
ll_error_cnt1=0
ls_txt_file= trim(s_FileName1)
//엑셀 OLE사용하기
xlApp = Create OLEObject
ll_return = xlApp.ConnectToNewObject( "excel.application" )
if ll_return < 0 then
MessageBox("엑셀 연결시 오류가 발생하였습니다..~r~n 컴퓨터에 엑셀이 설치되었는지 확인하세요..!",string(ll_return))
SetPointer(Arrow!)
return
end if
xlApp.Application.Visible = false
xlApp.Workbooks.Open(ls_txt_file)
xlBook = xlApp.Application.WorkBooks(1)
xlSheet= xlBook.Worksheets(1)
//전체 row col count
ll_tot_Row = xlApp.ActiveSheet.UsedRange.Rows.Count //업로드할 엑셀의 총 row
ll_tot_col = xlApp.ActiveSheet.UsedRange.Columns.Count //업로드할 엑세의 총 column
For ll_row = 2 to ll_tot_row //엑셀에 head가 존재하면 2부터 시작
ls_ordernum = ''
ls_ordernum = string(xlSheet.cells(ll_row,1).value)
ls_ShopName = ''
ls_ShopName = string(xlSheet.cells(ll_row,2).value)
ls_Prod_Nm = ''
ls_Prod_Nm = string(xlSheet.cells(ll_row,3).value)
//----------------------------------------------------
ls_Option = ''
ls_Option = string(xlSheet.cells(ll_row,4).value)
li_OrderQty = 0
li_OrderQty = Int(xlSheet.cells(ll_row,5).value)
ls_InputDay = ''
ls_InputDay = string(xlSheet.cells(ll_row,7).value)
ls_Reciver = ''
ls_Reciver = string(xlSheet.cells(ll_row,8).value)
ls_ZipCode = ''
ls_ZipCode = string(xlSheet.cells(ll_row,9).value)
ls_Addr = ''
ls_Addr = string(xlSheet.cells(ll_row,10).value)
ls_Tel = ''
ls_Tel = string(xlSheet.cells(ll_row,11).value)
ls_Hp = ''
ls_Hp = string(xlSheet.cells(ll_row,12).value)
ls_Memo = ''
ls_Memo = string(xlSheet.cells(ll_row,13).value)
ls_Admin_Memo = ''
ls_Admin_Memo = string(xlSheet.cells(ll_row,14).value)
ls_Cust_Nm = ''
ls_Cust_Nm = string(xlSheet.cells(ll_row,15).value)
ll_ins_row = dw_list.insertrow(0)
dw_list.object.일자[ll_ins_row] = s_FileName2
dw_list.object.주문번호[ll_ins_row] = ls_ordernum
dw_list.object.주문상품[ll_ins_row] = ls_ShopName
dw_list.object.전산제품명[ll_ins_row] = ls_Prod_Nm
dw_list.object.주문옵션[ll_ins_row] = ls_Option
dw_list.object.주문수량[ll_ins_row] = li_OrderQty
dw_list.object.입금일[ll_ins_row] = ls_InputDay
dw_list.object.수령자[ll_ins_row] = ls_Reciver
dw_list.object.우편번호[ll_ins_row] = ls_ZipCode
dw_list.object.주소[ll_ins_row] = ls_Addr
dw_list.object.전화번호[ll_ins_row] = ls_Tel
dw_list.object.핸드폰[ll_ins_row] = ls_HP
dw_list.object.메모[ll_ins_row] = ls_Memo
dw_list.object.관리자메모[ll_ins_row] = ls_Admin_Memo
dw_list.object.거래처명[ll_ins_row] = ls_Cust_Nm
Next
Next
xlApp.Application.Quit
xlApp.DisConnectObject()
Destroy xlSheet
Destroy xlBook
Destroy xlApp
//dw_list.event ue_update()
messagebox("확인",'Exce화일이 저장되었습니다.')
SetPointer(Arrow!)
Mysql DB에 Powerbuilder 로 접속하기 (0) | 2017.08.31 |
---|---|
PHP - Excel 내려받기 (0) | 2017.08.14 |
Windows 10 파워빌더 도움말 안나오는 문제 해결 방법 (0) | 2016.08.08 |
PHP - 공공 DATA XML 파싱(PHP 버전) (1) | 2016.08.08 |
파워빌더 현재 시간 출력방법 (0) | 2016.08.04 |
Blog is powered by kakao / Designed by 미스터짱