首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Delphi XE中使用XLSX文件的ADO

在Delphi XE中使用XLSX文件的ADO
EN

Stack Overflow用户
提问于 2013-03-11 17:10:18
回答 2查看 9.8K关注 0票数 1

这里的问题是ADO与Excel的连接--这仍然是在Dephi环境中读取/写入excel文件的标准方法吗?我们在使用ACEOLEDB驱动程序(ACE 12)读写时出现了多个问题,这包括

  • 使用哈希标签读取单元格不会返回结果
  • 导出网格时“无效浮点”。

我们还注意到微软网站上有许多版本的ACE 12驱动程序(通过Access数据库驱动程序可执行文件),它们似乎都有不同的Delphi问题。

有了这些东西,

  1. 在这一点上,在Excel中使用ADO是否很糟糕?
  2. 其他人有这些问题吗?您做了什么来解决这些问题(除了使用XLS文件而不是XLSX)?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 07:15:32

Delphi中的ADO倾向于TDataSet模型,这意味着严格的表格数据。不是那种优秀的人。每个excel表格都有一个随机填充的单元格,其中一些可能构成quazi表格范围,也可能不是。

取决于安装的软件

1)使用Excel应用程序打开XLSX,读取单元格并将它们传递给您的程序。这是最简单和兼容的方法,但由于COM IPC编组和交换,速度明显缓慢。有一些技巧可以加快它的速度,比如隐藏Excel窗口,复制数据数组而不是逐个单元的方法等等。

开始探索TExcelApplication组件- 包装纸

2)如果不希望依赖安装商业Excel,可以尝试使用OpenOffice读取XLSX文件。香草OpenOffice只能读到它们,但是其他发行版也能写出来。OpenOffice还公开了基于COM和基于HTTP的外部API.我知道有德尔福项目的德尔福- OOo交互,但个人没有使用它们,除了注意,我可以说没有详细的评估它。

3) Microsoft还曾向开发人员出售Office之类的产品,使您可以将Access和Excel内核作为再发行版,这样您就可以传递应用程序并安装并使用它们。不知道它是否仍然可行。

4)有一组商业组件直接读写这些文件,需要外部EXE来完成。虽然这将是最快速的工作方式,但它只支持某些特性子集(这对于您的特定目标可能是可行的,也可能是不可行的),并且可能在“未来兼容性”方面有问题,因为Microsoft将推出XLS和XLSX格式的更新版本(这可能与您关注的部分或根本无关)。就像有TXLSFile for Biff8格式一样,也有图书馆。还有一个来自著名的TMS 也许还有更多的组件。

5)您可以加入一些开源项目,并尝试根据您的需要对其进行增强,这同样取决于您需要多少子集。

我知道,很多人成功地使用OLE DB来访问Excel数据,但对我来说,这听起来总是有些反常,因为Excel文件根本没有任何内部规则的数据排列,不那么严格--表格式的RDBMS--就像一个。

票数 1
EN

Stack Overflow用户

发布于 2014-06-04 16:02:01

我真的只发现通过COM操纵Excel是可能的。我尝试过其他的方法,比如ADO,但是它们看起来总是充满了archane bugs -或者可能只是我的无知。

在某些领域,COM绝对是慢的。我使用了COM和( Excel文件中) VBA的组合来实现我需要做的事情。

考虑到Excel不会消失,但不能指望微软不背叛它的用户,比如取消VBA和COM支持,如果有人(我希望我有这种技能)能在Delphi中为Excel创建一些适当的支持,那就太好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15344467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档