1.創建Excel對象
eole=CREATEOBJECT(′Excel.application′)
2.添加新工作簿
eole.Workbooks.add
3.設置第3個工作表爲激活工作表
eole.Worksheets(″sheet3″).Activate
4.打開指定工作簿
eole.Workbooks.Open(″c:\temp\ll.xls″)
5.顯示Excel窗口
eole.visible=.t.
6.更改Excel標題欄
eole.Caption=″VFP應用程序調用Microsoft Excel″
7.給單元格賦值
eole.cells(1,4).value=XM(XM爲數據庫字段名)
8.設置指定列的寬度(單位:字符個數)
eole.ActiveSheet.Columns(1).ColumnWidth=5
9.設置指定行的高度(單位:磅)
eole.ActiveSheet.Rows(1).RowHeight=1/0.035
(設定行高爲1釐米,1磅=0.035釐米)
10.在第18行之前插入分頁符
eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1
11.在第4列之前刪除分頁符
eole.ActiveSheet.Columns(4).PageBreak=0
12.指定邊框線寬度(Borders參數如下)
ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3
13.設置四個邊框線條的類型
eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1
(其中Borders參數:1-左、2-右、3-頂、4-底、5-斜、6-斜/;LineStyle值:1與7-細實、2-細虛、4-點虛、9-雙細實線)
14.設置頁眉
eole.ActiveSheet.PageSetup.CenterHeader=″報表1″
15.設置頁腳
eole.ActiveSheet.PageSetup.CenterFooter=″第&P頁″
16.設置頁眉到頂端邊距爲2釐米
eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035
17.設置頁腳到底邊距爲3釐米
eole.ActiveSheet.PageSetup.FooterMargin=3/0.035
18.設置頂邊距爲2釐米
eole.ActiveSheet.PageSetup.TopMargin=2/0.035
19.設置底邊距爲4釐米
eole.ActiveSheet.PageSetup.BottomMargin=4/0.035
20.設置左邊距爲2釐米
veole.ActiveSheet.PageSetup.LeftMargin=2/0.035
21.設置右邊距爲2釐米
eole.ActiveSheet.PageSetup.RightMargin=2/0.035
22.設置頁面水平居中
eole.ActiveSheet.PageSetup.CenterHorizontally=.t.
23.設置頁面垂直居中
eole.ActiveSheet.PageSetup.CenterVertically=.t.
24.設置頁面紙張大小(1-窄行8 5 11 39-寬行14 11)
eole.ActiveSheet.PageSetup.PaperSize=1
25.打印單元格網線
eole.ActiveSheet.PageSetup.PrintGridlines=.t.
26.拷貝整個工作表
eole.ActiveSheet.UsedRange.Copy
27.拷貝指定區域
eole.ActiveSheet.Range(″A1:E2″).Copy
28.粘貼
eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial
29.在第2行之前插入一行
eole.ActiveSheet.Rows(2).Insert
30.在第2列之前插入一列
eole.ActiveSheet.Columns(2).Insert
31.設置字體
eole.ActiveSheet.Cells(2,1).Font.Name=″黑體″
32.設置字體大小
eole.ActiveSheet.Cells(1,1).Font.Size=25
33.設置字體爲斜體
eole.ActiveSheet.Cells(1,1).Font.Italic=.t.
34.設置整列字體爲粗體
eole.ActiveSheet.Columns(1).Font.Bold=.t.
35.清除單元格公式
eole.ActiveSheet.Cells(1,4).ClearContents
36.打印預覽工作表
eole.ActiveSheet.PrintPreview
37.打印輸出工作表
eole.ActiveSheet.PrintOut
38.工作表另爲
eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)
39.放棄存盤
eole.ActiveWorkbook.saved=.t.
40.關閉工作簿
eole.Workbooks.close
41.退出Excel
eole.quit
42 合併
string worksheet,beginRowcol,EndRowCol
MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Select
MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Merge
43 sheet改名
MyOLE.ActiveWorkBook.Sheets(olename).select
MyOLE.ActiveWorkBook.Sheets(olename).name=newname
MyOLE=Create OLEObject
ConnectErr=MyOLE.ConnectToNewObject ("excel.Application")
MyOLE.visible=false
//打開指定的XLS文件激活workbooks
MyOLE.application.workbooks.Open (FilePath)
//對XLS文件進行了改動以後,在關閉該文件時是否需要向用戶提出警告。
MyOLE.Application.DisplayAlerts = False
if isnull(MyOLE) then return -1 ;
if ConnectErr <0 then
choose case 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 -1
end if
///////////////////////////////////////////////////////////////////////////////
oleobject xlApp //聲明Excel應用程序對象
xlApp = Create OLEObject
OLEObject xlsub1,xlsub2,xlsub3,obook1,obook2,xlsub4,obook3
ret = xlApp.ConnectToNewObject( "Excel.Sheet" ) //打開自動化對象 應爲 "excel.application"
if ret < 0 then
MessageBox("Connect to Excel Failed !",string(ret))
return
//操作第一個excel文件
string ls_file3="C:\mytest.xls"
obook3=xlApp.Application.Workbooks.Open(ls_file3) //打開文件
xlsub4 = xlapp.Application.ActiveWorkbook.Worksheets[1] //激活第一頁
//對單元格賦值
xlsub4.cells[c,3].Value = string(mydata.getitemdecimal(r,'rs'))
xlsub4.cells[c,5].Value = string(mydata.getitemdecimal(r,'yp'))
xlsub4.cells[c,6] = string(mydata.getitemdecimal(r,'jc'))
xlsub4.cells[c,7] = string(mydata.getitemdecimal(r,'hy'))
xlsub4.cells[c,8] = string(mydata.getitemdecimal(r,'zl'))
//合併一個excel文件
string ls_ran
ls_ran = "B6:M"+string(ld_1+1)
obook1 = xlApp.Application.Workbooks.Open(ls_file2)
xlsub1 = xlapp.Application.ActiveWorkbook.Worksheets[1]
xlsub1.Range(ls_ran).Copy() //把所選內容複製到內存中
xlApp.Application.Visible = false
xlsub2 = obook3.Worksheets.add()
xlsub2.name = "分類彙總"
xlsub2.Range(ls_ran).PasteSpecial() //把上一個文件內容粘過來
//加入分類彙總
obook3.Worksheets("分類彙總").Activate()
integer a[6]
a={8,9,10,11,12,13}
xlsub2.Range(ls_ran).Select()
xlApp.Application.Selection.Subtotal(3,-4157,a, True, False, True)
xlsub2.Rows(1).Insert()
xlsub2.cells[1,1] = left(gs_shuqi,4)+"年"+right(gs_shuqi,2)+"月份"
xlsub2.Cells[1,1].Font.Name="宋體"
xlsub2.Cells[1,1].Font.Size=22
xlsub2.Range("A1:M1").Select()
xlApp.Application.Selection.Merge()
xlApp.Application.Selection.HorizontalAlignment = 2
oBook1.save()
oBook3.Save()
oBook3.Saveas(is_docname)
oBook1.close()
oBook3.close()
xlApp.Application.quit()
xlApp.DisConnectObject()
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/chengg0769/archive/2009/05/15/4190560.aspx
官方解答
請問各位高手:
我在Excel中錄製了一段宏。現在我想用powerbuilder調用這個Excel文件,運行這個宏。我應該用什麼命令?用“Run”行嗎?
---------------------------------------------------------------
感謝您使用微軟產品。
Excel 可以作爲OlE sesrver, 所以可被任何支持OLE對象的編程語言調用。下面是一個引用自以第三方網站的例子, 僅供您作參考。
http://www.sybase.com.cn/cn/content/support/exp_jszc_pb_ole_00002.htm
long numcols , numrows , c, r
OLEObject xlapp , xlsub
int ret
// Set the # of columns and rows to process
// Currently Set to copy the entire DW
numcols = long(dw_1.Object.DataWindow.Column.Count)
numrows = dw_1.RowCount()
// Create the oleobject variable xlapp
xlApp = Create OLEObject
// Connect to Excel and check the return code
ret = xlApp.ConnectToNewObject( "Excel.Sheet" )
if ret < 0 then
MessageBox("Connect to Excel Failed !",string(ret))
return
end if
// Open a particular Excel file
xlApp.Application.Workbooks.Open("c:\file1.xls") //,false,true
// Make Excel visible
xlApp.Application.Visible = true
// Resolve the Excel reference once
// This technique shortens the script and improves performance
xlsub = xlapp.Application.ActiveWorkbook.Worksheets[1]
// Loop thru the Datawindow and Excel sheet
// The for/next loop copies all rows for each column
For c = 1 to numcols
For r = 1 to numrows
xlsub.cells[r,c] = dw_1.object.data[r,c]
Next
Next
// Save opened file
//xlApp.Application.Activeworkbook.Save()
// SaveAs a different filename
//xlApp.Application.Activeworkbook.SaveAs("c:\file2.xls")
// clean up
在Excel 中,application 對象下有Run 命令,我們只需調用Run 來執行我們的宏。這是一個VB的例子。
HOWTO: Create and Call an Excel Macro Programmatically from VB[OffDev]
ID: Q194611
http://support.microsoft.com/default.aspx?scid=kb;ZH-CN;q194611
在powerbuilder中是類似的.
希望這些訊息對您有幫助。
- 微軟全球技術中心 DTA技術支持
基本語句
Ole_object.Workbooks.add//新建一個Excel文件
Ole_object.Workbooks.Open( "FileName ")//打開一個已存在Excel文件
Ole_object.ActiveWorkBook.Sheets( "SheetName ").Select//選擇文件中一個工作表
Ole_object.Application.Run( "MacroName ")//運行宏
Ole_object.Application.Visible=TRUE//Excel文件可見
Ole_object.Application.ScreenUpdating=true//設置可見屬性
②格式設置
Ole_object.ActiveSheet.Columns( "A:U ").AutoFit//列寬自動調整
Ole_object.ActiveSheet.Columns( "A:Z ").ColumnWidth=6.75//列寬
Ole_object.ActiveSheet.Rows( "1:100 ").RowHeight=12//行高
Ole_object.Application.StandardFont= "ArialNarrow ";//設置字體
Ole_object.Application.StandardFontSize= "8 "//設置字號
Ole_object.ActiveSheet.Font.Size= "8 "//設置字號
Ole_object.ActiveSheet.Font.Bold=True//粗體
Ole_object.ActiveSheet.Font.Italic=True//斜體
Ole_object.ActiveSheet.Font.Underline=True//下劃線
Ole_object.ActiveSheet.Font.StrikeThrough=True//刪除線
Ole_object.ActiveSheet.HorizontalAlignment=3//水平:4靠右;3居中;2靠左
Ole_object.ActiveSheet.VerticalAlignment=2//垂直:3靠下;2居中;1靠上
Ole_object.ActiveSheet.cells(2,1).font.name=’黑體’//設置字體
Ole_object.ActiveSheet.cells(2,1).font.size=25//設置字體大小
③工作區域操作:
Ole_object.ActiveSheet.Range( "A1:Z10 ").Property=value//設置一個工作區域內的屬性值
Ole_object.ActiveSheet.Range( "A1:Z10 ").Merge//合併單元格
Ole_object.ActiveSheet.Range( "A1:Z10 ").WrapText=False//自動換行禁止
Ole_object.ActiveSheet.Range( "A1:Z10 ").Borders(b_type).Weight=i_val//b_type:1左邊界;2右邊界;3上邊界;4下邊界;5左上傾斜;6
右上傾斜(以上爲對單元格的操作)7左邊界;8上邊界;9下邊界;10右邊界;11內部垂直邊界;12內部水平邊界(以上爲對區域的操
作)//i_val:0無邊界線;然後1,2,3。。。依次邊界線加粗
Ole_object.ActiveSheet.Range( "A1:Z10 ").Borders(b_type).linestyle=1//1與7—細實、2—細虛、4—點虛、9—雙細實線
④賦值操作
Ole_object.ActiveSheet.range( "A1:Z10 ").Cells.value=“姓名”
Ole_object.ActiveSheet.range( "A1:Z10 ").Cells.value=1
Ole_object.ActiveSheet.range( "A1:Z10 ").Cells.value=“2003-01-01”
Ole_object.ActiveSheet.Range( "A1:Z10 ").Cells(1,2).value=“年齡”//區域內一個單元格的賦值
Ole_object.ActiveSheet.Range( "A1:Z1 ").Cells(1,1).value=“SUM(RC[-9]:RC[-1])”
ls_filename = "C:\alt_report\wf_alt_report.xls "
if FileExists(ls_filename) then FileDelete(ls_filename)
OleObject Loo_Excel
Loo_Excel=create oleobject
if Loo_Excel.ConnectToNewObject( "Excel.Application ") <> 0 then
messagebox( '提示 ', '系統未安裝Excel,無法運行此操作! ')
return
end if
Loo_Excel.Application.Workbooks.Add()
Loo_Excel.Application.Workbooks(1).worksheets(1)
Loo_Excel.Application.Visible = True
Loo_Excel.Application.ScreenUpdating = false
// '正在處理表頭...... '
Loo_Excel.Range( "A1:AB1 ").Select
Loo_Excel.Selection.MergeCells = True
Loo_Excel.Selection.HorizontalAlignment = 3
Loo_Excel.Selection.VerticalAlignment = 3
Loo_Excel.Selection.Font.Bold = True
Loo_Excel.Selection.Font.Size = 14
Loo_Excel.Selection.RowHeight = 28.50
Loo_Excel.ActiveCell.FormulaR1C1 = dw_3.describe( "ls_title "+ ".text ")
///寫標頭
Loo_Excel.application.workbooks(1).worksheets(1).cells(3, 1 ).value = "排單號碼 "
// dw_2.describe( "po_no "+ ".name "+ "_t.text ")
Loo_Excel.application.workbooks(1).worksheets(1).cells(3, 2 ).value = "客人款號 "
Loo_Excel.application.workbooks(1).worksheets(1).cells(3, 3 ).value = dw_2.describe( "cust_nam_t.text ")
///內容
for i=1 to dw_2.rowcount()
Loo_Excel.application.workbooks(1).worksheets(1).cells(3+i, 1).value = string( dw_2.object.po_no[i] )
next
Loo_Excel.application.ActiveWorkbook.SaveAs(ls_filename)
Loo_Excel.Application.ScreenUpdating = True
Loo_Excel.DisconnectObject()
-----------------------------------------------------------------
也可以從Excel提取信息,假設你想知道當前活動Sheet的A1單元(Cell)的值,
你可以使用如下代碼:
ANY MyValue
MyValue = ExcelServer.ActiveSheet.Cells(1,1).value
CHOOSE CASE ClassName(MyValue)
CASE 'string '
//assign to string
//other data types here
......
END CASE
注意ANY變量的用法。返回的Excel對象的method/property可能是各種各樣的數據
類型,所以除非你絕對確定返回類型(例如一個Cell對象的ColumnWidth屬性一般都
返回的是integer變量),你一般都要使用ANY變量,然後再用ClassName函數來確定
對應的值。
範例代碼
POWERBUILDER是面向對象的數據庫開發工具之一,它可以操縱衆多大型數據庫和桌面數據庫,支持多種硬件平臺。但它有一個致命的弱點,就是打印報表非常不方便,打印函數太少,特別是對中國式報表。而 EXCEL製表卻非常容易,若把兩者結合起來使用則會取長補短。 本人通過實踐,順利地把兩者結合起來。首先用 POWERBUILDER製作一窗口w_excel,然後在窗口中建立一個數據窗口dw_excel和三個按鈕cb_saveas、cb_start、cb_print。同時編寫腳本爲:
1.cb_saveas的腳本爲:
saveas(w_excel.dw_excel, ″c:\jycf\xmk.xls″, excel!, true)
2.cb_start的腳本爲:
run(″c:\program files\microsoft office\office\excel.exe xmk.xls″,maximized!)
3.cb_print的腳本爲:
long handle_1
handle_1=openchannel(″excel″,″xmk.xls″) ′建立與EXCEL的通道
setremote(″r2c1″,″序號″,″excel″,″ xmk.xls″)
setremote(″r2c2″,″摘要″,″excel″,″ xmk.xls″)
setremote(″r2c3″,″收入″,″excel″,″ xmk.xls″)
setremote(″r2c4″,″支出″,″excel″,″ xmk.xls″)
setremote(″r2c5″,″餘額″,″excel″,″ xmk.xls″)
setremote(″r2c6″,″日期″,″excel″,″ xmk.xls″)
//更改某一行或某一列的值,同時關閉通道
closechannel(handle_1,handle(w_excel))
string str_print
str_print=″[print()]″
execremote(str_print,″excel″,″xmk.xls)
這樣一來,就把兩者有機地結合起來。
論文專題
摘要Microsoft公司的Office辦公軟件中的Excel是一種專業的電子表格處理軟件,Microsoft公司對它的Office軟件系列都提供了對自動化技術的支持,這樣就可以通過其他高級編程語言調用Office軟件系列,利用其成熟而可靠的技術與功能來輕鬆實現特定功能。本文中,將通過自動化技術,實現在PowerBuilder中調用Excel來實現表格的輸出與打印。
關鍵詞 自動化 Excel PowerBuilder 表格
1 問題的提出
在爲某企業設計電子圖文檔管理系統中,用戶提出要求,要能夠快速輸出某些電子表格。在未使用自動化技術之前,該企業使用的是AutoCad軟件來一次性將多個表格生成到一個DWG文件中,然後通過繪圖儀出圖。這種做法的好處在於能夠有效的節省企業的開支,一次性生成大量的表格。但是,缺點也是明顯的:這種做法欠缺靈活性,當遇到只需要輸出少量表格的情況時,做法過於複雜。即這種做法非常適合於大量表格的批量輸出,而不適合個別表格的單獨輸出。正是在這種背景下,我們提出了使用Excel電子表格處理軟件來處理該企業的表格輸出問題。
Excel軟件是專門爲處理各式電子表格而設計,它能夠非常高效而專業的處理各式表格,並且非常關鍵的是:它具有表格計算彙總功能,在這一點上,AutoCad軟件是無法相比的。另外一個原因,在當前的企業中,打印機的使用日益普及,打印速度也日益加快,當多個用戶同時需要打印時,可以通過高速的網絡打印機來輕鬆實現,在這一點上,使用Excel也具有一定的優勢。
2 自動化技術
Microsoft公司提供的自動化技術,簡單的說,就是將某一個應用程序的功能(可能是一部分)當作一系列的對象來向其他的外部應用程序暴露(Expose),這個外部應用程序就可以使用這些對象,這個過程就被稱爲自動化(Automation)。例如,Excel,我們可以將它的大部分功能當作一系列對象來加以暴露,然後在另外的應用程序中使用這些對象,這就是使用自動化對象來調用Excel完成指定功能的關鍵所在。
一個應用程序的可訪問對象被稱爲對象模型(Object Model),如果能夠使用自動化來操縱一個程序的對象模型就意味着可以重複使用組件。例如,使用自動化,利用Excel中已經編寫和測試好的代碼來進行復雜的數學運算,這就省去了程序員親自動手編寫和調試複雜代碼的麻煩。
暴露對象的程序被稱爲服務器(Servers),使用這些對象的程序被稱爲客戶(Clients)。在這裏,我們把Excel當作自動化服務器,把我們的PowerBuilder應用程序當作客戶,這樣就可以通過自動化技術來實現特定的表格生成和打印功能。
在大多數的Office軟件中都包含一個Application對象,Excel也不例外,這個對象是Excel對象模式中的基礎對象,它包含了許許多多的成員(Member),但是在這裏,我們只需要使用到其中的一部分。
3 在PowerBuilder中使用自動化技術
PowerBuider是Sybase公司推出的一種高級數據庫應用程序開發環境,在這個環境中開發數據庫應用程序,使用其專利技術——DataWindow,可以很輕鬆的開發出非常專業的數據庫應用程序。此外,PowerBuilder還支持多種數據庫,能夠很輕鬆的與目前流行的MS SQL Server、Oracle等企業級數據庫建立連接,處理各種事務。
PowerBuilder中的編程語言被稱爲腳本(Script),實際上,使用PowerBuilder編寫的程序也是事件驅動,在界面設計上也完全做到了“所見即所得”,並完全使用面向對象的編程思想,它還提供了對OLE、DDE、Automation等技術的支持,下面就來說明如何在PowerBuilder中使用自動化技術。
首先,聲明一個OLE對象,如下:
OLEObject OLE_MyExcel
其次,創建該OLE對象,如下:
OLE_MyExcel =Create OLEObject
然後,使用PowerBuilder中的ConnectToNewObject函數來創建一個新的OLE對象,並且連接到該對象上,如下:
OLE_MyExcel. ConnectToNewObject ("excel.Application")
調用該函數時,如果成功的話,返回值是0,否則就意味着調用失敗。
到此,自動化的準備工作已經完成,下面是具體的操作過程。
4 處理和打印表格
在調用Excel時,首先需要解決的一個問題是是否讓Excel可見,即是否爲後臺操作。這個問題可以簡單的通過設置Visible屬性加以控制,如果希望Excel後臺運行,可以簡單的編寫如下語句:
OLE_MyExcel.visible=false
然後是打開指定的XLS文件,具體的語句如下:
OLE_MyExcel.Application.Workbooks.Open ("d:\excel-example.xls")
要操縱數據列表中的數據單元,就必須對ActiveCell對象進行操縱,該對象是Application對象中一項屬性。將數據輸入到一個數據單元包括兩個步驟:第一是選擇一個數據單元,第二是將數據傳遞給它。選擇一個數據單元通過調用Range對象的Select()方法就可以完成,Range對象是用來選擇一個或多個數據單元的。Select()方法需要起始的行數、列數和結束的行數、列數來確定所選擇的數據單元。如果只選擇一個單獨的數據單元,就可以忽略結束的行、列數。當範圍被設定以後,將數據傳遞給ActiveCell對象(引用了被Range對象指定的數據單元)的FormulaR1C1屬性。如下:
OLE_MyExcel.Range("c10").Select()
OLE_MyExcel.ActiveCell.FormulaR1C1 = sle_2.text //Sle_2爲一個靜態文本框控件
OLE_MyExcel.Range("J10").Select()
……
如果希望得到一系列數值的和,則需要首先使用Select()方法來指定需要求和的Cell的範圍,然後指定存放和的Cell位置,最後調用SUM方法即可,如下:
OLE_MyExcel.Range(“A1:D1”).Select()
OLE_MyExcel.Range(“E1”).Activate()
OLE_MyExcel.ActiveCell.FormulaR1C1 = “=SUM(RC[-4]:RC[-1])”
當然還可以進行其他方面的設置,例如把字體設置爲粗體(Bold),則可以編寫如下代碼:
OLE_MyExcel.Range(“A1:E1”).Select()
OLE_MyExcel.Selection.Font.Bold = True
至於其他的設置可以參考相關書籍。
至於表格的打印,則是簡單的調用PrintOut()方法即可,但是需要首先指定打印的範圍,如下是打印名爲“Sheet1”的WorkSheet的代碼:
OLE_MyExcel.Worksheets("sheet1").Activate()
OLE_MyExcel.ActiveSheet.PrintOut()
接下來是關於對XLS文件進行了改動以後,在關閉該文件時是否需要向用戶提出警告。這個問題只需要簡單的對OLE_MyExcel.Application.DisplayAlerts屬性進行設置即可,爲True時彈出警告框,爲False時不彈出警告框,保存所作的修改。
最後一步,在作完所有工作以後,需要關閉自動化對象,撤銷與自動化服務器的連接,銷燬OLE對象,因爲使用自動化程序,尤其是Word或Excel這樣的Office程序,所消耗的系統資源是很龐大的,因此在每次工作完成之後,需要釋放這部分系統資源。如下:
OLE_MyExcel.Application.quit()
OLE_MyExcel.DisConnectObject()
destroy OLE_MyExcel
5 結束語
在使用了自動化技術以後,完滿的解決了原來的表格處理問題,可以非常方便的對各種表格進行小批量的處理與打印,非常靈活。如果能夠與企業的數據庫結合起來,通過外部程序將數據成批輸入,亦可解決大批量數據輸出的問題,不失爲一條好的解決方案。
在實際應用中,通過與企業數據庫相結合,使用此方法自動填寫了包含了大量數據的XLS文件,並可以通過打印機打印出來.
eapp.visible:=false;
eworkbook:=eapp.workbooks.add;
eworkbook.worksheets[1].name:='java';
eworkbook.worksheets[1].Columns[1].ColumnWidth := 40;
//exworksheet.columns.autofit;//使各列自動對齊
eapp.activeworkbook.saveas('c:\222.xls');
eapp.workbooks.close;
eapp.quit;
eworkbook.worksheets[1].columns.autofit
ExcelWorksheet.columns.autofit