파워빌더 엑셀파일 업로드 입니다.
위와 같이 function 을 설정하고 내용은 아래것을 복사해서 붙여 넣습니다.
//***************************************************************************************//
//* Import file type : TXT(탭형식), CSV(쉼표), XLS(엑셀파일)
//* Function : f_excel_import *//
//* 용 도 : 선택한 파일을 DataWindow에 ImportFile 하기 *//
//* Argument : as_path (처리할 Excel File 경로, 파일명 포함) *//
//* adw (IMPORT할 DataWindow) *//
//* as_error ( Reference, Error Msg) *//
//* ReTurn값 : Long( 1 : Success, 0에서 -9 : ImportFile Fail, -10 : FileOpen Fail, *//
//* -11 : FileDelete Fail ) *//
//* 사 용 예 : f_excel_import('C:\TEMP\TEMP.XLS', dw_1, REF ls_err) *//
//***************************************************************************************//
oleobject ole_excel
Boolean lb_select, lb_delete
Integer li_connect, li_open
Long ll_xls, ll_row, ll_import
String ls_open_file, ls_save_file , ls_msg
SetNull(as_error)
ls_open_file = trim(as_path)
IF Len(ls_open_file) = 0 THEN
as_error = "엑셀 파일의 경로를 입력하세요."
RETURN -10
END IF
IF Not FileExists(ls_open_file) Then
as_error = "지정한 파일이 존재하지 않습니다."
RETURN -10
END IF
if pos(ls_open_file,'CSV') + pos(ls_open_file,'csv') > 0 then
ll_xls = pos(ls_open_file,'CSV') //쉼표분리파일
if IsNull(ll_xls) or ll_xls = 0 then ll_xls = pos(ls_open_file,'csv')
else
ll_xls = pos(ls_open_file,'xls') //엑셀파일
if IsNull(ll_xls) or ll_xls = 0 then ll_xls = pos(ls_open_file,'XLS')
end if
if IsNull(ll_xls) or ll_xls = 0 then //* Excel File이 아니면 Text File인지 체크
ll_xls = pos(ls_open_file,'txt') // txt 탭 분리 파일
if IsNull(ll_xls) or ll_xls = 0 then ll_xls = pos(ls_open_file,'TXT')
If Not IsNull(ll_xls) or ll_xls > 0 then
ls_save_file = ls_open_file
goto excel_import
END IF
as_error = "Excel 파일이 아닙니다."
Return -10
end if
ole_excel = CREATE OLEobject
li_connect = ole_excel.ConnectToObject("","excel.application")
IF li_connect = -5 THEN
// -5 Can't connect to the currently active object
li_connect = ole_excel.ConnectToNewObject("excel.application")
END IF
IF li_connect <> 0 THEN
SetPointer(Arrow!)
CHOOSE CASE li_connect
CASE -1
ls_msg = "Invalid Call: the argument is the Object property of a control~r~n"
CASE -2
ls_msg = "Class name not found~r~n"
CASE -3
ls_msg = "Object could not be created~r~n"
CASE -4
ls_msg = "ould not connect to object~r~n"
CASE -9
ls_msg = "Other error~r~n"
CASE -15
ls_msg = "MTS is not loaded on this computer~r~n"
CASE -16
ls_msg = "Invalid Call: this function not applicable~r~n"
CASE ELSE
ls_msg = "If any argument's value is NULL, ConnectToNewObject returns NULL.~r~n"
END CHOOSE
DESTROY ole_excel
as_error = '엑셀 프로그램을 실행할 수 없습니다. ~r~n'+ls_msg
RETURN -10
END IF
SetPointer(HourGlass!)
ole_excel.WorkBooks.Open(ls_open_file)
ole_excel.Application.Visible = FALSE
lb_select = ole_excel.WorkSheets(1).Activate
ls_save_file = mid(ls_open_file, 1, ll_xls -2) + string(now(),'hhmmss') + ".txt"
ole_excel.Application.Workbooks(1).Saveas(ls_save_file, -4158)
ole_excel.WorkBooks(1).Saved = TRUE
ole_excel.WorkBooks.Close() //파일삭제
ole_excel.Application.Quit
ole_excel.DisConnectObject()
DESTROY ole_excel
excel_import:
ll_import = adw.importfile(ls_save_file) // 1번라인부터 입력
//ll_import = adw.importfile(ls_save_file,2)
SetPointer(Arrow!)
IF ll_import < 1 Then
MessageBox("ERROR", "파일 처리에 실패 하였습니다.(" + ls_save_file + ")", StopSign!)
Return ll_import
END IF
adw.accepttext()
IF NOT FileDelete(ls_save_file) THEN
MessageBox("ERROR", "파일 삭제에 실패 하였습니다.(" + ls_save_file + ")", StopSign!)
Return -11
END IF
Return 1
완성된 function 을 이용할때
버튼을 하나 만들어서 아래와같이 입력하면 됨.
Datawindow에 넣어서 사용하면 된다.
//---------------------------------------------------------------------//
//화일 열기창을 open한후 선택한 화일명을 세팅 //
//---------------------------------------------------------------------//
i_Value = GetFileOpenName("Select File", + i_docname, i_named, "tx*", &
+ "Excel File (*.xlsx), *.xlsx," + "Text File (*.xls), *.xls" )
If i_Value = 1 Then
sle_1.Text = i_docname
End if
string ls_err
long i
SetPointer(HourGlass!)
//-----------------------------------------------------------------//
if Trim(sle_1.text) = '' then
messagebox("오류","파일명을 선택하세요.",Stopsign!)
return
end if
//-----------------------------------------------------------------//
// 선택한 엑셀파일을 LIST에 넣는다
//-----------------------------------------------------------------//
dw_list.Reset()
dw_list.SetRedraw(False);
f_excel_import(sle_1.Text, dw_list, REF ls_err)
dw_list.SetRedraw(True);
SetPointer(Arrow!)
'프로그래밍 > 파워빌더' 카테고리의 다른 글
파워빌더 배포 (0) | 2019.10.19 |
---|---|
파워빌더 파일복사 (0) | 2019.10.19 |
파워빌더 DataWindow 에서 CheckBox 및 리스트박스와 DataWindow 비교 (0) | 2019.10.18 |
파워빌더 문자열 찾아서 바꾸기 (0) | 2019.10.18 |
파워빌더 폴더내 파일 리스트 구하기 (0) | 2019.10.18 |
댓글