Python办公自动化:使用python来自动生成word文档-docx文件

让python做办公自动化,让你闲下来

Python办公自动化:使用python来自动生成word文档

让python做自动化,让你闲下来

上节对python的excel Python办公自动化系列:自动操作Excel自动化做了介绍。这次介绍如何用python对word进行自动生成。

安装模块

pip install docx

使用文档

python-docx允许您创建新文档以及更改现有文档。实际上,它只允许您更改现有文档; 只是如果你从一个没有任何内容的文档开始,它最初可能会觉得你是从头开始创建一个。

这个特征是一个强大的特征。文档的很多外观取决于删除所有内容时剩下的部分。样式和页眉和页脚等内容与主要内容分开包含,允许您在起始文档中进行大量自定义,然后出现在您生成的文档中。

让我们逐步完成一个示例创建文档的步骤,从您可以对文档执行的两个主要事项开始,打开并保存它。

打开文件

最简单的入门方法是打开一个新文档而不指定要打开的文件:

from docx import Document
document = Document()
document.save('test.docx')

这将从内置的默认模板创建一个新文档,并将其保存为名为“test.docx”的文件。所谓的“默认模板”实际上只是一个没有内容的Word文件,与已安装的python-docx 软件包一起存储。它与您 在选择Word的文件>从模板新建...菜单项后选择Word 文档模板大致相同。

真的打开文件

Python办公自动化:使用python来自动生成word文档

模板创建一个新文档

如果想要对最终文档进行更多控制,或者如果要更改现有文档,则需要使用文件名打开一个文档:

document = Document('existing-document-file.docx')
document.save('new-file-name.docx')

注意事项:

  • 您可以通过这种方式打开任何Word 2007或更高版本的文件(Word 2003及更早版本中的.doc文件将不起作用)。虽然您可能无法操作所有内容,但已经存在的任何内容都会加载并保存得很好。功能集仍在构建中,因此您无法添加或更改标题或脚注之类的内容,但如果文档中包含它们,python-docx则可以让它们保持单独且足够智能以保存它们而无需实际了解它们是什么。
  • 如果您使用相同的文件名打开并保存文件,python-docx将乖乖地覆盖原始文件而不会窥视。你要确保这是你想要的。

打开'文件'文档

python-docx可以从所谓的类似文件的对象中打开文档。它还可以保存到类似文件的对象。当您希望通过网络连接或数据库获取源文档或目标文档并且不希望(或不允许)与文件系统交互时,这可能很方便。实际上,这意味着您可以传递打开的文件或StringIO / BytesIO流对象来打开或保存文档,如下所示:

f = open('foobar.docx', 'rb')
document = Document(f)
f.close()
# or
with open('foobar.docx', 'rb') as f:
source_stream = StringIO(f.read())
document = Document(source_stream)
source_stream.close()
...
target_stream = StringIO()
document.save(target_stream)

该'rb'文件打开方式参数不是必需的所有操作系统上。默认情况下'r'有时足够,但Windows上至少需要某些版本的Linux才能使用'b'(选择二进制模式),以允许Zipfile打开文件。

好的,祝贺您成功打开了一个文件,并且将它保存下来。下一步将会对如何自动操作生成word里的内容.

推荐阅读