Delphi 控制 Excel 的重要属性和方法
在 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 1C 1:=’ 合并区 ’ ; // 合并后写入文本
注意以后要读合并的单元格里面的文本就是读合并区域的左上角的那个单元格的文本
在 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 3’ ].copy;
从指定单元格开始粘贴:
Olecon.oleobject.application.range[‘A 4’ ].PasteSpecial;
常用的就这些了,对 delphi 中 server 面板下的 EXEL 控件和创建 EXCEL.Application COM 对象的方式都适用。
作者:费亚
时间: 2004-9-14