如何使用Python创建Word文档?

49
我想使用Python创建一个Word文档,但是我希望尽可能多地重用我的现有文档创建代码。我目前正在使用XSLT生成HTML文件,然后以编程方式转换为PDF文件。然而,我的客户现在要求将相同的文档以Word (.doc)格式提供。

到目前为止,我还没有找到解决这个问题的有效方法。是否有人知道任何开源库(或*gulp*专有解决方案),可以帮助解决这个问题?

注意:所有可能的解决方案都必须在Linux上运行。我相信这就排除了pywin32。

5个回答

39

使用Python创建Word文档的几种方法:

编辑:

由于COM不可用,建议采用以下方法(受@kcrumley答案启发):

使用UNO库从python自动化Open Office,打开HTML文件,然后保存为.doc。

编辑2:

现在有一个纯Python的python-docx项目,看起来很不错(我没有使用过)。


哇,你提到了我要说的两个相同的想法(COM和RTF)。谢谢你帮我省了时间。:) - Kevin
8
建议使用.RTF而不是.DOC,点赞。 - Hardwareguy
很遗憾,需要使用 .doc 格式,不支持 RTF。 - Huuuze

35
我成功地尝试了 python-docx,它使您能够在 Python 中创建和编辑 docx。

13
为了在回答问题时吸引更多的注意力,你可以考虑包含一些示例代码,即使它只是从你提供的链接中链接过来。 - Jakob Bowyer
@mbk 我找不到使用这个库创建文档的教程。 - Volatil3
1
@Volatil3,该页面上有一个示例,这是一个直接的链接 - mbk
这里有一些关于python-docx的额外文档,其中包含一些有用的示例:https://python-docx.readthedocs.io/en/latest/。我发现它非常有帮助。 - LMc

2

我曾经也用python做过类似的事情。这比我想要的更加繁琐,但是使用pyRTF创建的文档会导致Word和OpenOffice崩溃,我没有动力去尝试弄清楚原因。

我发现最简单的方法(但并不理想)是创建一个Word文档模板,其中包含我想要的样式。然后我的Python创建一个HTML文件,其中<p>样式标记为Word样式。然后我在Word中打开HTML文件并打开模板。我将所有文本从HTML文件剪切并粘贴到模板中,Word会根据我之前设置的样式重新格式化所有文本。对于我这种情况下的偶尔文件来说,这个方法可行。但它可能不适用于你的情况。FYI。


2
1)如果您只想在当前管道的末尾添加另一个步骤,现在有几个选项可用于将PDF文件转换为Word文件。我没有尝试过123PDFConverter,但CNET编辑推荐它(同一链接);它有一个免费试用版,并支持自动化。与任何第三方文件转换器一样,取决于您的PDF文件有多复杂以及软件实际上有多好,您可能会遇到不同的问题。
2)基于codeape的COM自动化建议,如果您使用COM自动化Word,您可以在Word中打开实际的HTML文件,并调用“另存为”命令,将其保存为DOC文件。

0

你能把它写成WordML XML文件并压缩成.docx格式吗?如果你的客户尚未使用Office 2007,他们只需要安装Word 2007过滤器。

这方面有很多示例。

你也可以直接在Word中加载XML文件,从2003开始,或者至少我听说是这样的


不幸的是,这个选项并不理想。据我所知,我需要将我的数据转换成WordML格式才能保持文档的格式。 - Huuuze

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