5

互操作库很慢,需要安装 MS Office。很多时候你不想在服务器上安装 MS Office。

我想使用Apache POI,但我使用的是 .NET。

我只需要提取文件的文本部分,而不是在 Office 文件中创建或“存储信息”。

我需要告诉您,我有一个非常大的文档库,我无法将它转换为更新的 XML 文件。

我不想为二进制文件编写解析器。像 Apache POI 这样的库可以为我们做到这一点。不幸的是,它仅适用于 Java 平台。也许我应该考虑用 Java 编写这个应用程序。

我仍然没有在 .NET 中找到 POI 的开源替代方案,我想我会用 Java 编写自己的应用程序。

4

9 回答 9

3

对于所有 MS Office 版本:

对于新办公室(2007 年):

对于旧办公室(2007 年之前):

于 2008-09-30T14:13:44.963 回答
2

由于新的 docx 格式本质上是基于 XML 的文件,因此一旦您了解其结构,就可以使用标准 XML DOM 技术以编程方式创建和操作它们。

这些文件基本上是带有备用文件扩展名的 zip 档案。使用System.IO.Packaging命名空间来访问文件的内部元素,然后将它们打开到 aXmlDocument中以执行操作。

有可用的示例,SourceForge 上的 Office Open XML 项目可能值得寻找灵感。

至于较旧的二进制格式,这些是 MS 专有的,您可能从内部获取内容的唯一方法是通过 Office 对象模型(需要安装 Office)或第三方文件转换器/解析器。

不幸的是,没有任何第一方和原生的 .NET 平台可以处理这些文件。

于 2008-09-30T14:10:51.477 回答
2

查看Aspose 组件。它们旨在模仿互操作功能,而无需在服务器上安装完整的 Office。

于 2008-09-30T15:14:34.663 回答
1

你需要对这些文件做什么?如果您只想将它​​们流式传输给用户,那么基本文件流就可以了。如果您想创建新文件(可能基于模板)以发送给用户,用户可以在 Office 中打开该文件,有多种解决方法或解决方法

如果您实际上将数据保存在 Office 文档中以供您的网站使用,那么您做错了。Office 文档,甚至 Excel 电子表格和访问数据库,都不是与交互式网站一起使用的合适选择。

于 2008-09-30T13:49:10.563 回答
1

如果文档是 word 2007 格式,您可以使用 system.io.packaging 库以编程方式与之交互。

温迪

于 2008-09-30T14:03:12.900 回答
1

在 Java 世界中,还有JExcelApi。它写得很清楚,据我所见,比 POI 干净得多。因此,即使将该代码移植到 .NET 也不是不可能的,当然这取决于您是否有足够的时间。

于 2009-04-02T15:45:11.327 回答
0

开发办公室。

您可以针对它进行编程并让它为您做很多事情,而无需花钱购买服务器的许可证,或者在您的服务器上安装与它相关的漏洞。

于 2008-09-30T14:03:39.763 回答
0

可以使用使工作簿看起来像数据库表的 ODBC 驱动程序(或者它是 OLE DB 驱动程序?不记得)来读取 Microsoft Excel 工作簿。但我不知道如果没有 Office 套件本身,该驱动程序是否可用。

于 2008-09-30T14:22:40.357 回答
0

您可以使用 OpenOffice。它有一个命令行转换工具:

转换方法

简而言之,您在 OpenOffice 中定义一个宏,然后使用 OpenOffice 的命令行参数调用该宏。在该参数中,本地文件(Office 文件)的名称被编码。

这不是一个很好的解决方案,但它应该是可行的。

于 2008-10-03T11:32:16.303 回答