代码之家  ›  专栏  ›  技术社区  ›  DV.

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

  •  13
  • DV.  · 技术社区  · 16 年前

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

    服务器运行centos 5.2并安装了php/perl/python。如果必须的话,我可以执行本地二进制文件和shell脚本。我们使用的是Apache2.2,但一旦它投入使用,就会切换到nginx。

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

    4 回复  |  直到 15 年前
        1
  •  17
  •   1800 INFORMATION    16 年前

    Office2007文件格式已打开,并且 well documented . 大致来说,所有以“x”结尾的新文件格式都是压缩后的XML文档。例如:

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

    保存Word 2007文档,其中包含 文本、图片和其他元素,如 一个.dx文件。

    将.zip扩展名添加到 文件名。

    双击该文件。它将在 zip应用程序。你可以看到 组成文件的部分。

    将部件提取到 您以前创建过。

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

    如果您需要读取旧的格式,OpenOffice有一个API,可以读写Office2003和旧的文档,或多或少会取得成功。

        2
  •  6
  •   mikemaccana    15 年前

    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
  •  3
  •   Hafthor    16 年前

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

        4
  •  2
  •   Darryl Hein IrishChieftain    16 年前

    您可能可以检查代码 Sphider . 它们是文档和PDF文件,所以我相信它们可以阅读。对于其他Office格式,也可能引导您朝正确的方向前进。