Excel的資料匯入到PB的DW中

coolhe發表於2009-09-25
Excel的資料匯入到PB的DW中
//====================================================================
// Event:cb_1::clicked()
//--------------------------------------------------------------------
// Description:兩種方法進行
//1、通過陣列一行一行讀入(定義資料有點麻煩)
//2、通過剪貼簿直接
//網友自行選擇用哪種方法
//--------------------------------------------------------------------
// Arguments:(None)
//--------------------------------------------------------------------
// Returns:
//--------------------------------------------------------------------
// Author:  FlyStone        Date: 2008-09-13 17:31:44 Sep
//--------------------------------------------------------------------
// Modify History:
//   
//--------------------------------------------------------------------
// Copyright (C) 2007-008 Flystone Co.,Ltd! All rights reserved.
//====================================================================
String ls_path,ls_name
ls_path = "C:\Documents and Settings\Administrator.FLYSTONE\桌面\新建資料夾 (3)\test.xls"
dw_1.Reset() //clean DW
String a[1000,1000]
Integer i,j,li_ret

li_ret = GetFileopenName('選擇XLS',ls_path,ls_name,"XLS","EXCEL (*.XLS),*.XLS")
if li_ret <> 1 then return

OLEObject ExcelServer
Int li_ConnectErr
ExcelServer = Create OLEObject
li_ConnectErr = ExcelServer.ConnectToNewObject( "excel.application" )
If li_ConnectErr < 0 Then
    Choose Case li_ConnectErr
        Case -1
            MessageBox('錯誤提示','無效的呼叫')
        Case -2
            MessageBox('錯誤提示','類名沒發現')
        Case -3
            MessageBox('錯誤提示','物件不能建立')
        Case -4
            MessageBox('錯誤提示','檔案不能連線')
        Case -5
            MessageBox('錯誤提示','不能連線現在的物件')
        Case -6
            MessageBox('錯誤提示','檔案無效')
        Case -7
            MessageBox("錯誤提示","檔案不存在或已經開啟")
        Case -8
            MessageBox("錯誤提示","伺服器不能裝載選擇的檔案")
        Case -9
            MessageBox("錯誤提示","其他錯誤")
    End Choose
    Return
End If

ExcelServer.Workbooks.Open(ls_path,0,False)
//對XLS檔案進行了改動以後,在關閉該檔案時是否需要向使用者提出警告:剪貼簿提示資訊。

ExcelServer.Application.DisplayAlerts = False
//選擇sheets表
//ExcelServer.activeworkbook.worksheets("sheet2").Select()  
//方法一:
Int li_rows,li_columns
li_rows = ExcelServer.ActiveSheet.UsedRange.Rows.Count //取得總行數
li_columns= ExcelServer.ActiveSheet.UsedRange.columns.Count //取得總行數
// # of columns in excel
sle_2.Text = TRIM(STRING(li_rows))
// # of rows in excel
sle_1.Text = STRING(li_columns)
//lole_sheet = ole_1.Application.ActiveWorkbook.WorkSheets[1] //得到第當前work的第一個sheet
for i = 1 to li_rows
     dw_1.insertrow(0)
     for j = 1 to li_columns
          a[i,j] = string(ExcelServer.ActiveSheet.Cells(i,j).value)
          dw_1.Setitem(i,j,a[i,j])
     end for
end for

//方法二,利用剪貼簿
ExcelServer.ActiveSheet.cells.Copy
dw_1.ImportClipboard(2) //匯入資料需要標題   
ExcelServer.Application.activeworkbook.Close(False)
ExcelServer.Application.quit()
ExcelServer.DisconnectObject()

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3090/viewspace-615519/,如需轉載,請註明出處,否則將追究法律責任。

相關文章