跳转到主要内容

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

项目描述

Build Status PyPI

对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')

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

document.write('output.docx')

有关更多信息,请参阅单元测试和这篇不错的文章使用Python填充MS Word模板(在实用商业Python上)。

待办事项/愿望清单

  • 图像合并。

贡献

  • 在GitHub上fork存储库并开始修改

  • 创建/修复单元测试

  • 提交包含您更改的拉取请求

单元测试

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

python -m unittest discover

致谢

此库由 Bouke Haarsma 和贡献者编写。

项目详情


下载文件

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

源分发

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

上传时间

构建分发

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

上传时间 Python 2 Python 3

支持