今天中公优就业大白和大家分享Python办公自动化:自动打开word文档。
python-docx允许您创建新文档以及更改现有文档。实际上,它只允许您更改现有文档;
但如果不存在此文件,将会自动从头开始创建一个。
这个功能很强大。文档的主要格式外观取决于删除所有内容时剩下的部分。样式和页眉和页脚等格式信息与要内容分开存在,并允许您在起始文档中进行各种自定义,最后生成最终文档。
让我们逐步完成一个示例创建文档的步骤。从2大主要功能开始吧,打开并保存它。
一、打开文件
最简单的入门方法是打开一个新文档而不指定要打开的文件:
from docx import Documentdocument =
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()#
orwith 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打开文件。
终上所述,打开了一个文件,并且将它保存到某个地方。下一步,我将会带你领略下如何自动对文档进行排版。