解析和生成 Microsoft Office 2007 文件 (.docx, .xlsx, .pptx)

14

我有一个网络项目,必须从用户提供的文档中导入文本和图像,其中一种可能的格式是Microsoft Office 2007。还需要生成此格式的文档。

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

我的选择是什么?有人对此有经验吗?

4个回答

18

Office 2007文件格式是开放的,并且有很好的文档说明。大体上,所有以“x”结尾的新文件格式都是压缩的XML文档。例如:

要打开一个Word 2007 XML文件,请创建一个临时文件夹,用于存储文件及其组成部分。

将包含文本、图片和其他元素的Word 2007文档另存为.docx文件。

在文件名末尾添加.zip扩展名。

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

将这些部分提取到之前创建的文件夹中。

其他文件格式大致相似。我目前不知道任何与它们交互的开源库,但根据您的具体要求,读写简单文档似乎并不困难。肯定比旧格式方便得多。

如果您需要读取旧格式,OpenOffice有一个API,可以更或少地成功地读取和写入Office 2003及更早版本的文档。


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')

3

我已经成功地在一个项目中使用了OpenXML格式SDK通过代码修改Excel电子表格。这需要.NET,但我不确定它在Mono下的工作效果如何。


2

您可以查看Sphider的代码。他们有文档和pdf,所以我相信他们可以阅读它们。这也可能为您提供其他Office格式的正确方向。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接