利用Delphi读写Excel信息
2008-10-14 11:13
302 查看
利用Delphi读写Excel信息■ 周艳会 |
如今,企业利用Excel编制了大量表格,积累了宝贵的数据资源。如果能将这些数据资源导入到机关办公系统或企业信息系统中,将有益于信息的深层利用。同时,在应用软件中加入对Excel信息的读写,也会使软件使用更方便,数据处理更灵活。 虽然,目前已经有一些处理Excel数据的控件,但一般觉得通用性差,使用起来不方便,难以满足具体应用开发需求。下面结合笔者的开发经验,介绍利用Delphi实现读写Excel信息的方法。 准备工作 首先,Delphi要在Uses部分,把要使用的外部程序的类写入。在这里,我们把“ExtCtrls,ComObj”写入Uses部分。其次,在程序变量声明部分声明要用到的变量: VAR XL: Variant; Sheet: Variant; SFileName:string; J:integer; 假定Excel格式的Excel1表的内容、数据库表Table1的表结构如表所示。下面以这两个表为基础,介绍利用Delphi读写Excel信息的实现过程。 将Excel1的内容写入Table1中 第一步,创建Excel对象: TRY XL := GetActiveOleObject('Excel.Application'); EXCEPT XL := CreateOleObject('Excel.Application'); END; 第二步,使用OpenDialog控件,找到将要打开的Excel文件并打开,假设将要读入的内容放在sheet1上: OpenDialog1.Execute; SFileName:=OpenDialog1.FileName;XL.WorkBooks.Open(SFileName); Sheet := XL.WorkBooks[XL.WorkBooks.Count].WorkSheets[1]; 第三步,打开接收Excel信息的数据表,假设在数据模块DBmain中,已设置ADO数据连接和数据访问QryTable1: WITH DBMain.QryTable1 do BEGIN if Active then close;SQL.Clear;SQL.Add('select * from Table1'); open;END; 第四步,使用循环,读入Excel1的数据,并追加入已连接并打开的数据表中: J:=2; //从第2行开始//若收到时间、文件号均为空,则结束 WHILE (sheet.Cells[J,1].text< >'') and (sheet.Cells[J,2].text< >'') DO BEGIN Append; DBMain.QryTable1.FieldByName('SDSJ').Value:=sheet.Cells[J,1].Value; DBMain.QryTable1.FieldByName('WJH').Value:=sheet.Cells[J,2].Value; DBMain.QryTable1.FieldByName('CLQK').Value:=sheet.Cells[J,3].Value; J:=J+1; END; DBMain. QryTable1.UpdateBatch(); ShowMessage('成功接收Excel文件信息!'); 第五步,最后键入“XL.Quit;”,退出Excel并释放所创建的对象。 将Table1的内容写入Excel1中 假设Table1的内容是已读入的Excel1的内容。与上例相同,也要在Uses部分加入“ExtCtrls,ComObj”;在Var部分声明XL和Sheet等变量。 第一步,创建Excel对象: TRY XL := GetActiveOleObject('Excel.Application'); EXCEPT XL := CreateOleObject('Excel.Application'); END; 第二步,打开一个空的Excel文件。为了使Excel文件可读性更强,我们可预先准备一个格式规范的模板。使用OpenDialog控件,找到模板文件的路径,并打开,模板内容放在sheet1上: OpenDialog1.Execute; SFileName:=OpenDialog1.FileName; XL.WorkBooks.Open(SFileName); Sheet := XL.WorkBooks[XL.WorkBooks.Count].WorkSheets[1]; 第三步,打开提供数据的数据表Table1,假设在数据模块DBmain中,已设置ADO数据连接和数据访问QryTable1,则此处的代码如下: WITH DBMain.QryTable1 do BEGIN if Active then close; SQL.Clear; SQL.Add('select * from Table1 where SDSJ like '+ QuotedStr('2006年11月'+ '%')); open; END; 第四步,循环写入数据: FOR J:=2 TO 2+DBMain. QryTable1.RecordCount DO BEGIN sheet.Cells[J,1]:=DBMain.QryTable1.FieldByName('SDSJ').AsString; sheet.Cells[J,2]:=DBMain.QryTable1.FieldByName('WJH').AsString; sheet.Cells[J,3]:=DBMain.QryTable1.FieldByName('CLQK').AsString; J:=J+1; if j!=2+DBMain. QryTable1.RecordCount then next;END; 第五步,最后保存Excel文件并退出,释放对象: XL.WorkBooks[XL.WorkBooks.Count].SaveAS(SFileName); XL.Quit; (作者单位系总后后勤科学研究所) |
相关文章推荐
- 利用Java+POI 读写Excel文档&向Excel中插入图片
- delphi 调用udl文件读写数据库连接信息
- Delphi中的Ini文件的读写(解释信息手写的)
- 利用NPOI开源的读写Excel、WORD等微软OLE2组件读写execl,控制样式或单元格
- 利用NPOI开源的读写Excel、WORD等微软OLE2组件读写execl,控制样式或单元格
- java利用poi 读写(导入导出)word、excel(数组越界求解决办法)
- Wma 格式歌曲信息文件结构,附读写类(Delphi)
- 利用批处理程序和excel获取windows文件信息
- 税务催缴催报信息打印程序开发-Delphi读取Excel文件及操作
- Java利用poi读写Excel需要注意的问题
- delphi数字签名验证及能够获取数字签名文件信息(利用wintrust.dll的导出函数,翻译一下)
- 利用NPOI开源的读写Excel、WORD等微软OLE2组件读写execl,控制样式或单元格
- 利用python编程实现两excel表格的快速信息融合(xls文件的读和写)
- delphi利用ADO读取Excel 显示在cxgrid
- iMOOC学习笔记:Java的Excel读写操作入门实践-利用POI解析Excel文件(二)
- [导入]利用Delphi 5中调用Excel 97
- 利用java读写Excel文件、合并单元格
- java利用poi包读写excel
- Java 利用Apache POI 读写Excel文件超出行列限制
- Python利用系统命令获取文件(夹)信息以及Python对Excel的简单操作