用Delphi读取Excel电子表格

用Delphi读取Excel电子表格,delphi,export-to-excel,import-from-excel,Delphi,Export To Excel,Import From Excel,我需要读和写Excel电子表格使用德尔福2010。没什么特别的。只需在不同的工作表上读取和写入特定单元格和范围中的值。需要在未安装Excel的情况下工作并支持Excel 2007 我看过一些东西: 我试过使用,它可以选择整个工作表中的所有内容,但我没有太多的运气读取特定的单元格或区域 看起来很有希望,但它似乎没有积极的发展,他们也不回复电子邮件 有两种产品。主要产品似乎很实用,但价格昂贵。他们有一个精简版,但不支持Delphi2010 有什么建议吗?免费当然很好,但我愿意接受商业解决方案,只

我需要读和写Excel电子表格使用德尔福2010。没什么特别的。只需在不同的工作表上读取和写入特定单元格和范围中的值。需要在未安装Excel的情况下工作并支持Excel 2007

我看过一些东西:

  • 我试过使用,它可以选择整个工作表中的所有内容,但我没有太多的运气读取特定的单元格或区域

  • 看起来很有希望,但它似乎没有积极的发展,他们也不回复电子邮件

  • 有两种产品。主要产品似乎很实用,但价格昂贵。他们有一个精简版,但不支持Delphi2010


有什么建议吗?免费当然很好,但我愿意接受商业解决方案,只要它可靠且支持良好。

不要为Axolot的XLSMini(lite)版本而烦恼。我还没有购买任何一款,但我在2008年初询问了Excel 2007的支持情况,Lars告诉我XLSMini基于XLSReadWriteII,两者都将同时使用Excel 2007支持进行更新。自2008年4月以来,XLSReadWriteII已获得Excel 2007支持;XLSMini仍然没有它。

TMS Flexcel-我知道它看起来像Excel的报告组件(它做得很好,是工具箱中一个非常方便的工具),但它还包括用于读取和显示Excel文件的组件。阿德里安·加莱罗(Adrian Gallero)对Excel API(包括Excel 2007)的了解程度给我留下了深刻的印象


当然不是免费的,但75欧元的价格我觉得很划算。

如果Excel表格是相当直接的行/列布局,我很幸运使用ADO

我发现,使用ADO的关键是将Excel工作表当作数据库处理。如果Excel工作表主要是直线行和列布局,只需将行视为数据库记录,将列视为字段即可。首先通过搜索特定列(字段)值(最好是唯一的值)导航到所需行,然后通过引用作为列名的字段来读取该行中所需的单元格


如果你的Excel表格格式更自由,那就更难了。

幸运的是,我已经使用Axolot好几年了。支持论坛上的消息并不多,但可能是因为它工作得很好吧?

不要对NativeExcel一笑置之。我已经用了几年了,效果非常好。它速度快,用途广泛。我使用它生成一个格式良好的多页电子表格,其中包含冻结的窗格、单元格中的公式以及来自客户数据库的数据,供他们输入,然后发送回我。我的客户从我那里得到第一份电子表格时非常激动,因为它极大地减少了他们的工作量,而且使用起来相当直观


我不知道他们为什么没有回复你,因为我在过去两年中至少更新了他们的软件包几次。当我的许可证到期时,我肯定会续期。

真正有帮助的是,如果您对excel文件的布局有某种控制权

我构建了一个完整的单元和验收测试框架,其中数据和测试控件都包含在Excel电子表格中

我通过ADO做了所有事情。您可以将ADO SQL查询限制为整个工作表、命名范围或任何范围。以我的观点和经验,这种方法非常有效

有两件事确实给我带来了一些问题: 1.根据图纸的命名方式,ADO可能会也可能不会看到它们(同样,如果您可以控制布局,那就太好了!) 2.读取数据时,请注意ADO返回的数据类型,即它可能将数字显示为字符串。这是因为ADO尝试IIRC根据前几行猜测数据类型


免责声明:我从未使用过上述任何工具。ADO为我做到了这一点,自从我为我的框架编写了代码(显然保存了ADO部分…)以来,我感觉控制力更强。

我建议选择一个不需要在机器上安装Excel的选项。我曾经使用过一个组件,它可以轻松地在一张表格中填写一些数据,而无需安装excel。我也会在Excel工作表中完成大部分Excel工作。只需使用组件在工作表上填写一些数据


我的2cts。

布鲁斯,我已经使用Axolot XLSReadWriteII组件10年了。这是非常好的,他们的支持论坛(虽然在内容上是lite)似乎得到了很好的监控。XLSReadWritei2版本速度惊人,支持各种功能,如图表和图形、命名范围、动态添加公式、单元格格式(包括边框和着色、合并单元格、垂直和水平对齐、自动调整宽度列大小等)

我还没有升级到最新版本(我们仍然使用XLSReadWritei2),因为我们仍然可以使用Excel XP格式的文件,而且我根本没有使用XLSMini。不过,我可以对整个产品说些很好的话;事实上,在过去的一周里,我用它导出了一些数据库

如果你决定走这条路,我有一大堆关于如何做不同事情的笔记,可能会很有用;如果你想要,给我一张便条。我还有一个Delphi2007应用程序,它只显示了如何进行不同的格式化和对齐;实际上,我用Excel复制了一份现有的、相当复杂的报告,包括所有格式、边框等,我也很乐意向您提供


免责声明:我与Axolot或其任何员工没有任何关系。我只是一个非常高兴的客户,在以前的工作中了解了该产品,并在我开始目前的工作时留下了深刻的印象,购买了该产品。

我向您推荐SMImport/SMExport

迈克一直都很快乐
Extended Properties=Excel 8.0;HDR=Yes;IMEX=0  
SELECT * FROM [Sheet1$]
YourADOConnection.Execute('SELECT * INTO aSheet IN "'+ExtractFilePath(ParamStr(0))+'Exported.xls" "Excel 8.0;" FROM YourTable');