这里的问题是用Excel ADO连接 - 这是仍然一个Delphi的XE环境中的读/写Excel文件的标准方式? 我们正在阅读/使用ACEOLEDB驱动程序(ACE 12)写作时想出多个问题,这包括
- 阅读细胞与井号标签不返回结果
- “无效的浮点”导出网格时。
我们也注意到,有微软的网站上的ACE 12驱动器出许多版本(通过Access数据库驱动程序可执行文件)和它们各自似乎与德尔福不同的问题。
随着考虑到这些事情,
- 使用ADO与Excel在这点不好?
- 别人也有这些问题,你做了什么来解决这些问题(不是使用XLS文件,而不是其他XLSX)?
ADO在德尔福一边倒TDataSet的模式,这意味着严格的表格数据...这Excel是不是。 每个练成片具有一个随机的细胞填充,其中的一些可以构成自动准-片状范围,也可以不是。
根据所安装的软件,你可以在
1)使用Excel应用程序打开XLSX,读取细胞,并将它们传递给你的程序。 这是最容易和兼容的方法,虽然是明显慢由于COM IPC编组和切换。 有技巧将其拧紧,就像隐藏Excel窗口,复制数据,而不是细胞通过细胞的方法和这样的阵列。
开始探索TExcelApplication
组件- http://docwiki.embarcadero.com/RADStudio/XE3/en/Using_Component_Wrappers
2)如果你不想依赖于其安装的商业Excel中,您可以尝试阅读与OpenOffice的XLSX文件。 香草的OpenOffice只能读他们,虽然,但一些其他的发行版的可以把它们写为好。 OpenOffice的也暴露的外部API都基于COM和基于HTTP的。 我知道有德尔福Delphi的项目 - OOo的互动,但个人不使用他们,除了指出这种做法的,我可以说,它没有详细assesment。
3)微软还用来销售办事处开发商或如此,这给了你Access和Excel内核作为可再发行,你可以用你的应用程序,并通过安装和使用它们。 如果它仍然是可行的,虽然说不上来。
4)有一组商业组件读,直接写入这些文件W / O需要有外部的EXE的做工作。 虽然这将是工作最快捷的方式,它只会支持功能的一些子集(这可能会或可能不会对您的特定目标是确定),并可能有“未来的兼容性”的困扰微软将推出XLS的更新版本和XLSX格式(而这又可能是一些或没有关注到你)。 像有TXLSFile
为BIFF8格式,例如存在OExport
库 。 还有一个从众所周知的TMS Studio中的一个组成部分,也许更多一些 。
5)你可以参加一些开源项目,并尝试提升它为您的需求,然后再是取决于你是多么的子集需要。
我知道,很多人succefulyl使用OLE DB访问Excel数据,但对我来说总是听起来有些perversino,因为Excel文件没有任何内部规则的数据排列可言,没有那么严格,表格RDBMS般之一。
我真的永远只能发现有可能通过操纵COM Excel中。 我试过的替代品,如ADO,但他们似乎总是充满archane错误的 - 或许这只是我的无知。
COM是在某些领域绝对慢。 我已经使用COM的组合(Excel文件中)VBA实现什么,我需要做的。
由于Excel未要去走,但微软不能依赖于不被背叛它的用户,例如,用VBA和COM支持这样做了,如果有人在什么地方(我希望我的技能),这将是巨大的可以创建德尔福为Excel一些适当的支持。