【问题标题】:Parsing and generating Microsoft Office 2007 files (.docx, .xlsx, .pptx)解析和生成 Microsoft Office 2007 文件(.docx、.xlsx、.pptx)
【发布时间】:2010-09-15 10:52:42
【问题描述】:
我有一个网络项目,我必须从用户提供的文档中导入文本和图像,其中一种可能的格式是 Microsoft Office 2007。还需要生成这种格式的文档。
服务器运行 CentOS 5.2 并安装了 PHP/Perl/Python。如果必须,我可以执行本地二进制文件和 shell 脚本。我们使用 Apache 2.2,但一旦上线就会切换到 Nginx。
我有哪些选择?有人有这方面的经验吗?
【问题讨论】:
标签:
php
python
perl
parsing
office-2007
【解决方案1】:
Office 2007 文件格式是开放的,well documented。粗略地说,所有以“x”结尾的新文件格式都是 zip 压缩的 XML 文档。例如:
打开 Word 2007 XML 文件
存放文件的临时文件夹
文件及其部分。
保存一个 Word 2007 文档,其中包含
文字、图片和其他元素,如
.docx 文件。
在文件末尾添加 .zip 扩展名
文件名。
双击文件。它将在
邮编应用程序。你可以看到
组成文件的部分。
将零件解压到文件夹中
你之前创建的。
其他文件格式大致相似。我还不知道有任何开源库可以与它们进行交互——但根据您的具体要求,阅读和编写简单的文档看起来并不难。当然,它应该比使用旧格式要容易得多。
如果您需要阅读较旧的格式,OpenOffice 有一个 API,可以读取和写入 Office 2003 和较旧的文档,或多或少成功。
【解决方案2】:
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')
【解决方案4】:
您可能可以检查Sphider 的代码。他们提供文档和 pdf,所以我相信他们可以阅读。也可能会引导您朝着其他 Office 格式的正确方向发展。