Delphi控制Excel的方法
1 建立Excel檔案
要在Delphi中控制Excel,就必須用到OLE自動化。現在一般採用OLE2來建立OLE對象,當啟用一個OLE對象時,伺服器程式僅在容器程式內部啟用,這就是所謂的“就地啟用”(in-place activation)。
建立Excel檔案時,先建立一個OLE對象,然後在對象中建立工作表worksheet,如函數createExcel所示:
function createExcel:variant; var v:variant; sheet:variant; begin v:=createoleobject('Excel.Application');//建立OLE對象 v.visible:=true; v.workbooks.add(-4167); //添加工作表 v.workbooks[1].sheets[1].name:='test'; sheet:=v.workbooks[1].sheets['test']; return v; end; |
2 資料表格控制
Excel表格的控制,主要包括資料的匯入、修改;儲存格的合并、邊框的控制;表格的複製、粘貼等。當報表格式一定的情況下,表格的複製、粘貼顯得尤為重要,這樣,可以先製作一個檔案模板,然後按照實際需要輸出多頁報表即可。
(1)資料的匯入(importData)
procedure importData; var I,j:integer; v:variant; begin v:=createExcel; //建立Excel檔案test for I:=0 to maxcolumn do begin for j:=0 to maxrow do v.workbooks[1].sheets[1].cells[I,j]:=I*j; //匯入資料 end; end; |
(2)儲存格的合并、邊框的控制(lineStylecontrol)
儲存格的合并,是在選定合并範圍的情況下進行的。邊框控制可以操作邊框線條的是否顯示。其他方式的控制,可以仿照下面過程進行。
procedure lineStylecontrol; var v,sheet,range:variant; begin v:=createExecl; sheet:= v.workbooks[1].sheets[1]; range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];//選定表格 range.select; range.merge; //合併儲存格 range.borders.linestyle:=xlcontinuous; //置邊框線可見 range.font.size:=9; //改變表格內文本字型大小 end; |
(3)表格的複製與粘貼(copyandPaste)
procedure copyandPaste; var v,sheet,range:variant; begin v:=createExecl; sheet:= v.workbooks[1].sheets[1]; range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]]; range.select; //選定要複製的表格 range.copy; //複製選定的表格 sheet.range[sheet.cells[40,1],sheet.cells[40,1]].select; //選擇要粘貼的位置 sheet.paste; //粘貼表格 end; |
3 檔案的儲存
檔案儲存是在建立檔案的基礎上進行的,過程saveFile說明了檔案儲存過程中應該注意的問題:
procedure saveFile; var sheet,v:variant; begin v:=createExcel; if savedialog.execute then begin v.workbooks[1].saveas(savedialog.FileName);//儲存檔案 v.workbooks[1].close; //關閉工作表 v.quit; //關閉Excel v := unassigned; end; end; |