2008-10-06 53 views
13

我有一个Web项目,我必须从用户提供的文档导入文本和图像,其中一种可能的格式是Microsoft Office 2007。还需要以这种格式生成文档。解析并生成Microsoft Office 2007文件(.docx,.xlsx,.pptx)

服务器运行CentOS 5.2并安装了PHP/Perl/Python。如果必须的话,我可以执行本地二进制文件和shell脚本。我们使用Apache 2.2,但一旦上线,它将切换到Nginx。

我有什么选择?任何人都有这方面的经验?

回答

17

Office 2007文件格式已打开并well documented。粗略地说,所有以“x”结尾的新文件格式都是zip压缩的XML文档。例如:

要打开Word 2007中的XML文件创建一个用于存储 文件及其零件一个 临时文件夹。

保存一个Word 2007文档,其中包含 文本,图片和其他元素,为 的一个.docx文件。

将一个.zip扩展名添加到 文件名的末尾。

双击该文件。它将在 ZIP应用程序中打开。您可以看到构成文件的 部件。

将零件提取到之前创建的文件夹 。

其他文件格式大致相似。我还不知道有哪些开源库可以与它们进行交互 - 但根据您的具体要求,读取和写入简单文档并不困难。当然,它应该比以前的格式容易得多。

如果您需要阅读较早的格式,OpenOffice拥有一个API,并且可以读取和写入Office 2003和较早版本的文档,或多或少取得成功。

+0

这太棒了。感谢您的洞察力。 – Brian 2010-08-02 18:39:28

2

您也许可以检查Sphider的代码。他们的文档和pdf,所以我确定他们可以阅读。也可能会引导您为其他Office格式的正确方向。

3

我已成功在项目中使用OpenXML Format SDK来通过代码修改Excel电子表格。这需要.NET,我不确定它在Mono下的工作情况。

6

python docx模块可以从纯Python生成格式化的Microsoft office docx文件。开箱即用,它可以实现标题,段落,表格和项目符号,但makeelement()模块可以扩展为执行像图像这样的任意元素。

from docx import * 
document = newdocument() 

# This location is where most document content lives 
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0] 

# Append two headings 
docbody.append(heading('Heading',1) ) 
docbody.append(heading('Subheading',2)) 
docbody.append(paragraph('Some text') 
相关问题