非常好用的 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 的接口是引用计数,没用了会自动释放接口背后的对象实例。因此不需要管对象释放的问题。不用担心内存泄漏的问题。
相关推荐
灵析表格13 小时前
WPS Excel官方函数扩展库数据安全加密校验函数深度研究报告:Excel国密SM3/SM4加解密、MD5摘要、UUID、Base64与URL编解码全栈解析
excel·wps
AC赳赳老秦18 小时前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
VBAMatrix2 天前
表格导航!实现Word合并附注与多个Excel的数据同步
word·excel·审计报告·审计·会计师事务所·报告工具
AI英德西牛仔2 天前
手机文心怎么导出文档?AI 导出鸭一键解决格式崩塌与批量归档难题
人工智能·智能手机·excel·deepseek·ai导出鸭
AI导出鸭2 天前
Grok苹果版导出表格的工程化解耦方案:AI导出鸭的技术逻辑与批量实践
人工智能·excel·ai导出鸭
reasonsummer3 天前
【办公类110-05】20260807园园通小班“待补充”户籍地址自动修改(Python+EXCEL)
开发语言·python·excel
qq83443103 天前
一款纯前端的excel控件,XuY_Sheet 电子表格组件教程
前端·excel·教程·luckysheet·xuy_sheet控件·前端表格控件
开开心心就好3 天前
免费压缩软件WinRAR无弹窗、广告干扰
java·开发语言·前端·数据库·python·excel·winrar
AI导出鸭3 天前
怎么让千问做表格?AI导出鸭苹果版将千问输出的管道表格智能解析为二维结构,一键导出为Excel或Word标准表格。
人工智能·chatgpt·word·excel·ai导出鸭
xiaopai9455 天前
工程项目管理系统选型:WPS/Excel为何难以替代专业系统的数据关联逻辑
excel·wps·项目管理系统·建米软件