非常好用的 Excel 读写控件

处理 Excel 表格

如果你需要使用 Delphi 处理 Excel 表格,大概有几种方式。

  • 使用 ADOConnection,前提是你的电脑里面安装了:Microsoft Access Database Engine 2016 Redistributable,下载地址:https://www.microsoft.com/en-hk/download/details.aspx?id=54920;
  • Delphi 有好几个用于 Excel 的收费控件。
  • 用 Python 处理 Excel 的库,然后在 Delphi 里面使用 Python4Delphi 控件操作 Python。
  • 今天要介绍的 Delphi 开源代码库 Office4D。

几种不同方式的分析

  1. ADO 方式:此方式代码简单,导入后就是一个 TADODataSet,剩下的就是操作 DataSet 的代码了。都不用去分析有哪些字段。问题是微软的那个驱动可能有问题,如果 Excel 文件比较大,记录条数比较多,关闭 ADO 连接会耗时很长,ADOConnection1.Close 可能要等几十秒到几分钟才会执行完毕。如果在主线程里面执行,则会让程序直接冻结几十秒,显然不行。即便放到线程里面,如果程序导入结束立即退出,则线程里面的 ADOConnection1.Close 没执行完成,程序也无法退出。
  2. 收费控件,钱包不友好;
  3. 目标机器要专门安装 Python 环境,还要在 Python 环境里面用 pip 命令安装处理 Excel 的库,对用户不友好。除非专门做一个安装程序。
  4. Office4D 简单好用,开源免费。当然,导入数据的代码比 ADO 方式稍微多一点。

Office4D 的用法

复制代码
uses Office4D.Word,
  Office4D.Excel;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Fn: string;
  Workbook: IExcelWorkbook;
  Sheet: IExcelSheet;
  i: Integer;
  S, S1: string;
begin
  if not OpenDialog1.Execute() then
  begin
    Exit;
  end;

  Fn := Opendialog1.FileName;

  //Workbook 是接口,用完就不用管释放了。
  Workbook := TExcelWorkbookFactory.Create;
  Workbook.LoadFromFile(Fn);
  Sheet := Workbook.Sheets[0];

  for i := 0 to 26 do
  begin
    S := 'B' + i.ToString;
    Log(Sheet.Cell[S].AsString);
  end;

  Log('');

  for i := 0 to 30 do
  begin
    S := 'D' + i.ToString;
    S1 := Sheet.Cell[S].AsString;
    if (S1 = '') and (i > 2) then
    begin
      S1 := '结束:' + i.ToString;
      Log(S1);
      Break;
    end
    else
    begin
      Log(S1);
    end;
  end;

  Log('');

  for i := 0 to 8 do
  begin
    S := 'E' + i.ToString;
    Log(Sheet.Cell[S].AsString);
  end;
end;

procedure TForm1.Log(S: string);
begin
  Memo1.Lines.Add(S);
end;

说明

  • 注意 uses 部分,有 Office4D.Word. 它也能处理 Word 文件。它自己带的例子里面有代码。
  • 实际测试,打开大的 Excel 文件,导入结束后,退出程序,并不像 ADO 那样要等待很久。
  • 接口方式编程:Workbook 是接口。Delphi 的接口是引用计数,没用了会自动释放接口背后的对象实例。因此不需要管对象释放的问题。不用担心内存泄漏的问题。
相关推荐
写了20年代码的老程序员12 小时前
Excel 导入导出为什么总是把后端逼成字段搬运工
java·excel
Cloud_Shy61813 小时前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 中篇)
数据库·python·sql·数据分析·excel·web
Metaphor69214 小时前
使用 Python 将 Excel 转换为 PDF
python·pdf·excel
星越华夏16 小时前
Pandas获取excel表sheet名称
excel·pandas
俊哥工具17 小时前
不用安装不收费!多功能U盘修复工具,解决大部分U盘故障
学习·pdf·word·excel·音视频
_oP_i18 小时前
Excel 工作簿取消保护
excel
程序员杰哥19 小时前
Python+requests+excel 接口自动化测试框架
自动化测试·软件测试·python·测试工具·测试用例·excel·接口测试
流形填表1 天前
大风车Excel|本地版软件下载与使用教程(2026最新版)
excel
流形填表2 天前
大风车Excel|2026年最新消息
excel
Cloud_Shy6182 天前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 上篇)
python·数据分析·excel·pandas·matplotlib