以编程方式修改Excel电子表格的最佳方式

我正在寻找一个库,这将允许我编程修改Excel文件以将数据添加到某些单元格。 我目前的想法是使用命名范围来确定插入新数据的位置(基本上是1×1的范围),然后更新命名范围以指向数据。 这个将要整合的现有应用程序完全是用C ++编写的,所以我理想的是寻找一个C ++解决scheme(因此为什么这个线程的用处有限)。 如果一切都失败了,我会用一个.NET解决scheme,如果有一些方法与我们的C ++应用程序链接。

一个理想的解决scheme将是开源的,但是迄今为止我所见过的( MyXls和XLSSTREAM )都没有看到这个挑战。 我喜欢Aspose.Cells的外观,但它适用于.NET或Java,而不是C ++(并且花钱)。 我需要支持从97到现在的所有Excel格式,包括XLSX和XLSB格式。 理想情况下,它也支持OpenOffice等格式,以及(用于输出)PDF和HTML。

一些我需要支持的用例:

  • 阅读和修改电子表格中的任何单元格,包括公式
  • 创build,读取,修改命名范围(范围本身,而不仅仅是单元格)
  • 从一个单元格复制格式到一堆其他格式(包括条件格式) – 我们将使用一个单元格作为所有其他填充数据的模板。

任何帮助,你可以给我find一个合适的图书馆将是伟大的。 我也想听听一些关于各种build议(包括我的文章中的build议)的推荐,这样我就可以做出更明智的决定 – 容易使用,无缺陷,便宜等等。

最安全的build议是只使用OLE。 它使用COM,它根本不需要.NET。

http://en.wikipedia.org/wiki/OLE_Automation < – 大概半路下来是一个C ++的例子。

你可能不得不将一些function包装到可用性函数中,但是使用起来并不难看。

编辑:只要知道你需要一个Excel的副本,它的工作。 此外,还有一些第一方的.h文件,您可以find特定于Excel的文件。 (这一切都在维基百科文章中解释)

我不知道这是否是您的select,但是新的Office 2007格式采用压缩的XML格式,因此您可以自行修改。 在这里看到的规格 。

SpreadsheetGear for .NET将处理您的需求,并具有与Excel非常相似的API。

插入单元格时,您定义的名称(以及其他公式/图表等)将自动修复,以引用新的范围(就像在Excel中一样)。 所以你不需要更新你定义的名字(虽然完全支持创build和更新定义的名字,如果这是你想要做的)。

SpreadsheetGear是一个.NET组件,但是你可以构build你自己的包装,可以从C ++调用。

你可以看到我们的客户说什么,并在这里下载免费的,function全面的评估。

您是否已经尝试使用Excel COM接口? 显然Excel需要安装在机器上,这是一个痛苦的处理…

我会争辩说,一个.net解决scheme与COM互操作链接到您的C ++应用程序是最好的解决scheme。 在与他们合作的十多年时间里,我从来没有见过一种Excel的COM自动化,不会在某处泄漏内存。

如果您需要自动化Excel,我推荐使用Visual Studio Tools for Office 。 如果您不需要自动化,只需修改文件,这些文件可以采用Office 2007格式,那么最好find一个直接操作文件的库,而不是打开Excel来执行操作。

我最终使用Aspose.Cells,正如我在原来的post中提到的,因为它似乎是最简单的path。 我对这样的结果非常满意,他们的支持非常好。 我必须在C#中创build一个包装器,将COM接口导出到我的C ++应用程序。