PB中 把DW導出到Excel,與Excel通訊

//==============================================================================
// 事件: cb_export::clicked()
//------------------------------------------------------------------------------
// 描述: 把收費單的內容導入到excel中,Excel爲2003
//------------------------------------------------------------------------------
// 返回值:  long
//------------------------------------------------------------------------------
// 作者:    Ran (Sunday_hl)       日期: 2006.04.12-13
//------------------------------------------------------------------------------
// 修改歷史:
//    整理時間 2006.08.22
//==============================================================================

String docname,named
String current_dir
Integer Value
//================================================================================
//提示文件保存地點
current_dir = GetCurrentDirectory()
Value = GetFileSaveName("文件選擇",docname,named,"xls","Excel文檔 (*.xls), *.xls")
//恢復路徑
ChangeDirectory(current_dir)
IF Value <> 1 THEN RETURN
IF FileExists(docname) THEN
    IF MessageBox("提示信息","“" + docname + "”文檔已經存在,~r~n是/否覆蓋此文檔?",Information!,YesNoCancel!,1) <> 1 THEN
        RETURN
    END IF
END IF

//================================================================================
//使用ole向excel中倒入數據
OleObject uo_world,uo_sheel
uo_world = CREATE OleObject
uo_sheel = CREATE OleObject

IF uo_world.ConnectToNewObject("Excel.Application") <> 0 THEN        //把ole連接到excel
    MessageBox('連接到Excel錯誤','Excel無法連接!請確認是否已經安裝了Excel!~r~n或者與管理員聯繫!',Exclamation!)
    DESTROY uo_sheel
    DESTROY uo_world       
    RETURN
END IF
//================================================================================
//連接上後,對Excel進行操作
TRY    //try例行例外 控制
    uo_world.DisplayAlerts = False            //強制執行,不用提示
    uo_world.workbooks.add()                    //創建一個新的工作薄
    uo_sheel = uo_world.ActiveSheet()        //得到當前工作表
   
    uo_sheel.Rows.Font.size = 10        //把默認的字體設爲 10號
    uo_sheel.Rows.RowHeight = 15        //把默認的行高設爲 15
   
    uo_sheel.Range("A1:I5").Merge()    //合併單元格
    uo_sheel.Range("A1:I5").Value = "鎮江市XXXXXXXXXX檢測收費明細"        //爲單元格賦值
    uo_sheel.Range("A1:I5").Font.Bold = true        //字體顯示爲粗體
    uo_sheel.Range("A1:I5").Font.size = 18            //把區域字體定義爲18號
    uo_sheel.Range("A1:I5").HorizontalAlignment = 3        //區域內的字體居中,1是默認 2是左對齊,3是居中,4是右對齊
   
    uo_sheel.Range("A6:G6").Merge()
    uo_sheel.Range("H6:I6").Merge()
    uo_sheel.Range("H6:I6").Value = today()
    uo_sheel.Range("H6:I6").HorizontalAlignment = 3
   
    uo_sheel.Range("A6:I6").Borders[4].LineStyle = 1        //爲區域單元格畫下畫線 四個邊 順時針旋轉,線類型1爲實線2爲虛線,其他不知道
   
//都差不多了,廢話的 刪除掉了
.....................................................
   
    uo_sheel.Range("A9:B9").Merge()
    uo_sheel.Range("A9:B9").Value = "軟件流水號:"
    uo_sheel.Range("A9:B9").HorizontalAlignment = 4
    uo_sheel.Range("C9:I9").Merge()
    uo_sheel.Range("C9:I9").NumberFormat = "0"        //設置顯示格式
    uo_sheel.Range("C9:I9").WrapText = True
    uo_sheel.Range("C9:I9").value = dw_1.Object.accept_no[dw_1.getrow()]
    uo_sheel.Range("C9:I9").HorizontalAlignment = 2
   
    uo_sheel.Range("A10:B10").Merge()
    uo_sheel.Range("A10:B10").Value = "備忘錄:"
    uo_sheel.Range("A10:B10").HorizontalAlignment = 4
    uo_sheel.Range("C10:I10").Merge()
    uo_sheel.Range("C10:I10").HorizontalAlignment = 2
   
    uo_sheel.Range("A11:B11").Merge()
    uo_sheel.Range("A11:B11").Value = "收費依據:"
    uo_sheel.Range("A11:B11").HorizontalAlignment = 4
    uo_sheel.Range("C11:I11").Merge()
    uo_sheel.Range("C11:I11").Value = "收費依據:  <<XXXXX>> 蘇價費(1996)~r~n417號,蘇財綜(96)153號。"
    uo_sheel.Range("C11:I11").HorizontalAlignment = 2
    uo_sheel.rows(11).RowHeight = uo_sheel.rows(11).RowHeight * 2        //調整當前行的高度爲2倍普通高度
   
//都差不多了,廢話的 刪除掉了
.....................................................
   
    uo_sheel.Range("A12:I12").Borders[4].LineStyle = 1        //下畫線
    //================================================================================
    //提取子數據窗口,把其內容添加到excel中
    DataWindowChild dwc_1    //子數據窗口
    Long ll_row                //子數據窗口的行
    String ls_range        //保存動態的 行數
    dw_1.Object.DataWindow.Processing = 5        //讓數據窗口可以提取子數據窗口
    IF dw_1.getChild("dw_item",dwc_1) = 1 Then    //提取子數據窗口
       
        uo_sheel.Rows(13).Font.Bold = TRUE
        uo_sheel.Rows(13).RowHeight = 18
        uo_sheel.Range("A13:I150").HorizontalAlignment = 3        //讓這個區域的單元格居中
        uo_sheel.Range("A13:C13").Merge()
        uo_sheel.Range("A13:C13").Value = "檢測項目"
        uo_sheel.Range("D13:E13").Merge()
        uo_sheel.Range("D13:E13").Value = "單價"   
        uo_sheel.Range("F13:G13").Merge()
        uo_sheel.Range("F13:G13").Value = "樣品份數"       
        uo_sheel.Range("H13:I13").Merge()
        uo_sheel.Range("H13:I13").Value = "小計"       
       
        FOR ll_row = 1 TO dwc_1.RowCount()        //循環提取子數據窗口中的行 並插入到excel中
            ls_range = "A" + String(13 + ll_row) + ":C" + String(13 + ll_row)
            uo_sheel.Range(ls_range).Merge()
            uo_sheel.Range(ls_range).Value = dwc_1.getitemstring(ll_row,"item_name")
           
          //都差不多了,廢話的 刪除掉了
              .....................................................     
        NEXT   
        uo_sheel.Rows(13 + ll_row).Font.Bold = TRUE
        uo_sheel.Rows(12 + ll_row).RowHeight = 18
       
         //都差不多了,廢話的 刪除掉了
         .....................................................
       
        ls_range = "F" + String(13 + ll_row) + ":G" + String(13 + ll_row)
        uo_sheel.Range(ls_range).Merge()
        uo_sheel.Range(ls_range).Value = "委託樣應交金額:"
        uo_sheel.Range(ls_range).HorizontalAlignment = 4
       
        ls_range = "H" + String(13 + ll_row) + ":I" + String(13 + ll_row)
        uo_sheel.Range(ls_range).Merge()
        uo_sheel.Range(ls_range).Value = dwc_1.GetItemNumber(1,"compute_5")           
    Else
        MessageBox("Error","Get DataWindowChild Have A Big Error!",Exclamation!)
    END IF
    //================================================================================
    ls_range = "A" + String(13 + ll_row) + ":I" + String(13 + ll_row)
    uo_sheel.Range(ls_range).Borders[4].LineStyle = 1
    ls_range = "H" + String(13 + ll_row + 1) + ":I" + String(13 + ll_row + 1)
    uo_sheel.Range(ls_range).Merge()
    uo_sheel.Range(ls_range).Value = dw_1.GetItemString(1,"page_1")       
   
//    uo_world.visible = 1        //讓excel顯示
    uo_sheel.SaveAs(docname)
    MessageBox("提示信息","保存成功!")
//================================================================================
Catch(runtimeerror er)        //捕獲 異常
    MessageBox("運行時出錯", er.GetMessage(),Exclamation!)
Finally
    uo_world.quit()        //關閉excel
    DESTROY uo_sheel        //註銷對象
    DESTROY uo_world        //註銷對象
END TRY

//================================================================================
發佈了20 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章