如何在不安装MS Office且不使用Interop Library的情况下读取服务器中的MS Office文件?

时间:2008-09-30 13:45:48

标签: java .net apache ms-office office-interop

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

我想使用Apache POI,但我正在使用.NET。

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

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

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

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

9 个答案:

答案 0 :(得分:3)

对于所有MS Office版本:

对于新的Office(2007):

旧办公室(2007年之前):

答案 1 :(得分:2)

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

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

有一些例子可以做到这一点,SourceForge上的Office Open XML项目可能值得寻找灵感。

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

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

答案 2 :(得分:2)

查看Aspose components。它们旨在模拟Interop功能,而无需在服务器上安装完整的Office。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

RWendi

答案 5 :(得分:1)

在Java世界中,还有JExcelApi。从我能看到的内容可以非常清楚地写出来,比POI更清晰。因此,即使是.NET代码的端口也不是不可能的,当然,你手上有足够的时间。

答案 6 :(得分:0)

OpenOffice的。

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

Conversion Howto

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

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