Delphi控制Excel的重要屬性和方法
在delphi中調(diào)用excel有四種方式,我們選取其中的一種用OleObject來裝載excel工作表的方式來談delphi控制excel的重要屬性和方法。
首先給出通過OLE創(chuàng)建的一些主要代碼步進(jìn)行簡(jiǎn)單說明:
創(chuàng)建OLE對(duì)象:
Var olecon: TOleContainer;
Olecon:= TOleContainer.Create(self);
Olecon.oleobject:= Olecon.CreateObject('excel.sheet',false);
或選擇導(dǎo)入一個(gè)excel文件來創(chuàng)建OLE對(duì)象:
Olecon.oleobject:= Olecon.CreateObjectFromFile(xlsname,false);
最好隱藏excel的幾個(gè)工具條,這樣就好象是嵌在你的程序中的一個(gè)表而已了:
Olecon.OleObject.application.CommandBars['Standard'].Visible:=false;
Olecon.OleObject.application.CommandBars['Formatting'].Visible:=false;
Olecon.OleObject.application.CommandBars['Reviewing'].Visible:=false;
然后顯示并激活excel表,對(duì)TOleContainer定義的對(duì)象:
Olecon.show;
Olecon.doverb(0);
這樣基本可以了,但TOleContainer有個(gè)不好的地方,就是當(dāng)你一點(diǎn)擊其它控件是就它就失去焦點(diǎn),然后就自動(dòng)退出,其實(shí)并沒有真的退出,只是需要你再次激活它而已,關(guān)鍵是當(dāng)它失去焦點(diǎn)的時(shí)候就excel對(duì)象就不見了,可以用Timage控件把TOleContainer所在的地方有EXCEL時(shí)候的區(qū)域圖片截下來騙騙用戶,我們這里主要不是講這個(gè),就不詳述了。
下面我們就開始講Excel_TLB中的接口的常用屬性和方法,主要是針對(duì)導(dǎo)出和設(shè)定報(bào)表格式的一些接口元素。
單元格的讀寫屬性:
olecon.OleObject.application.cells.item[1,1];
olecon.OleObject.application.cells(1,1);
olecon.OleObject.application.cells[1,1].Value;
上面三種都可以對(duì)工作表的‘A1’單元進(jìn)行讀寫。
在delphi中對(duì)單元格(集),區(qū)域,工作表等所有對(duì)象的操作都是要Variant來實(shí)現(xiàn)的。
自己的程序中選定區(qū)域賦給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]];
對(duì)上面的Range合并單元格:
Range.merge;
Range. FormulaR
注意以后要讀合并的單元格里面的文本就是讀合并區(qū)域的左上角的那個(gè)單元格的文本
在excel表中選定區(qū)域賦給range:
range:=excel_grid1.OleObject.application.selection;
拆分單元格:
Range.unmerge;
合并后設(shè)定單元格(集)的格式:
Range.HorizontalAlignment:= xlCenter;// 文本水平居中方式
Range.VerticalAlignment:= xlCenter//文本垂直居中方式
Range.WrapText:=true;//文本自動(dòng)換行
Range.Borders.LineStyle:=1//加邊框
Range.Interior.ColorIndex:=39;//填充顏色為淡紫色
Range.Font.name:=’ 隸書’;//字體
Range.Font.Color:=clBlue;//字體顏色
常用格式也就這些,以上這些對(duì)于單個(gè)單元格也適用。
在excel表中尋找前后上下的單元格:
Var u1,u2,u3,u4,u5:Variant;
U1:=olecon.oleobject.application.activecell;//獲取當(dāng)前格;
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;
復(fù)制指定區(qū)域:
Olecon.oleobject.application.range[‘A1:C
從指定單元格開始粘貼:
Olecon.oleobject.application.range[‘A
常用的就這些了,對(duì)delphi中server面板下的EXEL控件和創(chuàng)建EXCEL.Application COM對(duì)象的方式都適用。
作者:費(fèi)亞
時(shí)間:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注