使用python-docx处理word.docx文件(2)
使用文档
python-docx
允许您创建新文档以及对现有文档进行更改。实际上,它仅允许您对现有文档进行更改。只是如果您从一个没有任何内容的文档开始,可能乍一看就像是从头开始创建一个文档。
这一特征是强大的。文档的外观在很大程度上取决于删除所有内容时剩下的部分。诸如样式,页面页眉和页脚之类的内容与主要内容分开包含,使您可以在起始文档中进行大量自定义,然后再出现在所生成的文档中。
让我们逐步完成一个文档示例的创建步骤,首先从您可以对文档执行的两个主要操作开始,将其打开并保存。
打开文档
最简单的入门方法是在不指定要打开文件的情况下打开新文档:
from docx import Document
document = Document()
document.save('test.docx')
这将从内置的默认模板中创建一个新文档,并将其原样保存到名为“ test.docx”的文件中。所谓的“默认模板”实际上只是一个没有内容的Word文件,该文件与安装的python-docx
软件包一起存储。它与 在选择Word的文件>从模板新建...菜单项后选择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打开文件。
好的,因此您已经打开了一个文档,并且可以确定以后可以将其保存在某个地方。下一步是在那里获取一些内容……