Delphi控制Excel的重要屬性和方法<?XML:namespace prefix = o ns = "urn:schemas-microsoft-com:office:Office" />
在Delphi中調用Excel有四種方式,我們選取其中的一種用OleObject來裝載Excel工作表的方式來談Delphi控制Excel的重要屬性和方法。
首先給出通過OLE創建的一些主要代碼步進行簡單說明:
創建OLE對象:
Var olecon: TOleContainer;
Olecon:= TOleContainer.Create(self);
Olecon.oleobject:= Olecon.CreateObject('Excel.sheet',false);
或選擇導入一個Excel文件來創建OLE對象:
Olecon.oleobject:= Olecon.CreateObjectFromFile(xlsname,false);
最好隱藏Excel的幾個工具條,這樣就好象是嵌在你的程序中的一個表而已了:
Olecon.OleObject.application.CommandBars['Standard'].Visible:=false;
Olecon.OleObject.application.CommandBars['Formatting'].Visible:=false;
Olecon.OleObject.application.CommandBars['RevIEwing'].Visible:=false;
然後顯示並激活Excel表,對TOleContainer定義的對象:
Olecon.show;
Olecon.doverb(0);
這樣基本可以了,但TOleContainer有個不好的地方,就是當你一點擊其它控件是就它就失去焦點,然後就自動退出,其實並沒有真的退出,只是需要你再次激活它而已,關鍵是當它失去焦點的時候就Excel對象就不見了,可以用Timage控件把TOleContainer所在的地方有Excel時候的區域圖片截下來騙騙用戶,我們這裡主要不是講這個,就不詳述了。
下面我們就開始講Excel_TLB中的接口的常用屬性和方法,主要是針對導出和設定報表格式的一些接口元素。
單元格的讀寫屬性:
olecon.OleObject.application.cells.item[1,1];
olecon.OleObject.application.cells(1,1);
olecon.OleObject.application.cells[1,1].Value;
上面三種都可以對工作表的‘A1’單元進行讀寫。
在Delphi中對單元格(集),區域,工作表等所有對象的操作都是要Variant來實現的。
自己的程序中選定區域賦給Range:
Var range,sheet:Variant;
Range:= olecon.OleObject.application.Range['A1:C3'];
或者:
Sheet:= olecon.OleObject.application.Activesheet;
Range:= olecon.OleObject.application.Range[sheet.cells[1,1],sheet.cells[3,3]];
對上面的Range合並單元格:
Range.merge;
Range. FormulaR<?XML:namespace prefix = st1 ns = "urn:schemas-microsoft-com:Office:smarttags" />
注意以後要讀合並的單元格裡面的文本就是讀合並區域的左上角的那個單元格的文本
在Excel表中選定區域賦給range:
range:=Excel_grid1.OleObject.application.selection;
拆分單元格:
Range.unmerge;
合並後設定單元格(集)的格式:
Range.HorizontalAlignment:= xlCenter;// 文本水平居中方式
Range.VerticalAlignment:= xlCenter//文本垂直居中方式
Range.WrapText:=true;//文本自動換行
Range.Borders.LineStyle:=1//加邊框
Range.Interior.ColorIndex:=39;//填充顏色為淡紫色
Range.Font.name:=’ 隸書’;//字體
Range.Font.Color:=clBlue;//字體顏色
常用格式也就這些,以上這些對於單個單元格也適用。
在Excel表中尋找前後上下的單元格:
Var u1,u2,u3,u4,u5:Variant;
U1:=olecon.oleobject.application.activecell;//獲取當前格;
U2:=u1.previous;//非特殊情況就是u1左邊的一格;
U3:=ui.next;//非特殊情況就是u2右邊的一格;
U4:=olecon.oleobject.application.cells[u1.cells.row-1,u1.cells.column];//非特殊情況為上面一格
U5:=olecon.oleobject.application.cells[u1.cells.row+1,u1.cells.column];//非特殊情況為下面一格
刪除和插入一行和一列:
Olecon.oleobject.application.rows[2].delete;
Olecon.oleobject.application.columns[2].delete;
Olecon.oleobject.application.rows[2].insert;
Olecon.oleobject.application.columns[2].insert;
復制指定區域:
Olecon.oleobject.application.range[‘A1:C
從指定單元格開始粘貼:
Olecon.oleobject.application.range[‘A
常用的就這些了,對Delphi中server面板下的EXEL控件和創建Excel.Application COM對象的方式都適用。