在Delphi中操作Excel大部分人已经轻车熟路,因为Delphi中有一套ADO组件用于操作微软的相关产品,无论是MsSql、Access还是Excel都可以轻松搞定,网上的例子也比较多。
但用Lazarus操作Excel的例子比较少,能搜到的大部分也是通过控件FPSpreadsheet进行,虽然操作Excel比较方便,但不是我想要的方式,我是想把Excel当作一个数据表来操作。
最后找到一套开源的数据库控件ZeosDBO解决了这个问题。
具体操作:
放置一个ZConnection组件,命名为ConMain设置它的Protocol为ado,然后设置它的database为ado的链接串就行了,具体代码如下:
const
ConStrExcel2007: string =
'Provider =Microsoft.ACE.OLEDB.12.0; Extended Properties = Excel 8.0; Data Source = %s';
ConStrExcel2003:string='Provider = Microsoft.Jet.OLEDB.4.0; Extended Properties = Excel 8.0; Data Source =%s';
var
ExcelFileName: string;
begin
if OpenDialog1.Execute then
begin
ConMain.Disconnect;
ExcelFileName := OpenDialog1.FileName;
ConMain.Protocol :='ado' ;
ConMain.Database:=format(ConStrExcel2007, [ExcelFileName]);
ConMain.Connect;
end;
end;
说明:ConStrExcel2007这个ADO链接串的写法支持最新的Excel2007及以上版本,也就是.xlsx后缀的文件,也支持Excel2003以下的版本。
ConStrExcel2003这个ADO链接串的写法仅支持Excel2003及以下的版本。
所以推荐用第一种写法,除非你的系统不支持
其它操作就和Delphi里面用ADO操作一样了,就不赘述了。
另外,还有一个坑就是当前最新版的ZeosDBO是Zeos 7.3-alpha版,这个版操作Excel可以正常连接,但是打开相关表sheet就会报异常,所以推荐使用当前的稳定版Zeos 7.2.14,或者等7.3版稳定了再用。
ZeosDBO组件的下载地址 https://sourceforge.net/projects/zeoslib/
欢迎留言讨论使用Lazarus过程中遇到的问题,Good Luck!
还不快抢沙发