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

时间:2008-10-06 05:07:19

标签: php python perl parsing office-2007

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

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

我有什么选择?有人有过这方面的经验吗?

4 个答案:

答案 0 :(得分:17)

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

  

打开Word 2007 XML文件创建   临时文件夹,用于存储   文件及其部分。

     

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

     

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

     

双击该文件。它会打开   ZIP应用程序。你可以看到   组成文件的部分。

     

将部件提取到该文件夹   你之前创建的。

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

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

答案 1 :(得分: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')

答案 2 :(得分:3)

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

答案 3 :(得分:2)

您可以查看Sphider的代码。他们是docs和pdf,所以我相信他们可以阅读它们。可能还会引导您为其他Office格式指明正确的方向。

相关问题