Skip to main content

对 docx (Microsoft Office Word) 文件执行邮件合并

项目描述

构建状态 派皮

对 Office Open XML (docx) 文件执行邮件合并。无需安装 Microsoft Office Word 即可在任何系统上使用。支持 Python 2.7、3.3 及更高版本。

安装

使用pip安装:

$ pip install docx-mailmerge

用法

打开文件。

from mailmerge import MailMerge
with MailMerge('input.docx') as document:
    ...

列出所有合并字段。

print document.get_merge_fields()

合并字段,作为 kwargs 提供。

document.merge(field1='docx Mail Merge',
               field2='Can be used for merging docx documents')

合并表行。在您的模板中,将 MergeField 添加到您要指定为模板的行。提供此 MergeField 的名称作为 参数。第二个参数包含用于 MergeField 替换的具有键值对的行。

document.merge_rows('col1',
                    [{'col1': 'Row 1, Column 1', 'col2': 'Row 1 Column 1'},
                     {'col1': 'Row 2, Column 1', 'col2': 'Row 2 Column 1'},
                     {'col1': 'Row 3, Column 1', 'col2': 'Row 3 Column 1'}])

从版本 0.2.0 开始,您还可以将这两个单独的调用组合成一个对merge的调用。

document.merge(field1='docx Mail Merge',
               col1=[
                   {'col1': 'A'},
                   {'col1': 'B'},
               ])

从 0.2.0 版本开始,还有模板合并的功能。这将为列表中的每个项目创建一个模板副本,进行合并,并按分页符或分节符分隔它们(请参阅函数文档)。

使用此功能时,请确保不要使用注释、脚注、书签等。这是因为这些元素具有 id 属性,该属性必须是唯一的。这个库不处理这个,导致无效的文档。

document.merge_templates([
    {'field1': "Foo", 'field2: "Copy #1"},
    {'field1': "Bar", 'field2: "Copy #2"},
], separator='page_break')

将文档写入文件。这应该是一个新文件,因为ZipFile不能修改现有的 zip 文件。

document.write('output.docx')

有关更多信息和示例,另请参阅单元测试和这篇关于 Practical Business Python 上的用 Python 填充 MS Word 模板的精彩文章。

待办事项/愿望清单

  • 图像合并。

贡献

  • 在 GitHub 上 fork 存储库并开始 hacking

  • 创建/修复单元测试

  • 发送包含更改的拉取请求

单元测试

为了确保库按照设计的方式执行,使用了单元测试。在提供新功能或修复错误时,应该有一个单元测试来演示它。运行测试套件:

python -m unittest discover

学分

这个库是由Bouke Haarsma和贡献者编写的。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

docx-mailmerge-0.5.0.tar.gz (7.5 kB 查看哈希

已上传 source

内置分布

docx_mailmerge-0.5.0-py2.py3-none-any.whl (9.2 kB 查看哈希

已上传 3 7