对 docx (Microsoft Office Word) 文件执行邮件合并
项目描述
基于Bouke的Docx-mailmerge: 1、merge与merge_rows可以将所有符合的替换 2、全部基于TNGPS则提供的方式,实现图片的替换(title为字段名称,descr如果为可删除,没有匹配数据删除) 基于Bouke 的 Docx-mailmerge(3q): 1. 启用 merge_rows 所有需要的表,而不仅仅是第一个。2. 修复了嵌套表行合并的bug。
对 Office Open XML (docx) 文件执行邮件合并。无需安装 Microsoft Office Word 即可在任何系统上使用。支持 Python 2.7、3.3 及更高版本。
安装
使用pip安装:
$ pip install docx-mailmerge-hxd
用法
打开文件。
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 -hxd-0.7.3.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | e27c1fea2c0b488d06e3915f8ee660858b57168b4e80c7ec10a1c696de82a303 |
|
| MD5 | e20dda39f98be244c7bcbda9f814e607 |
|
| 布莱克2-256 | 188520edd7489aa90fc460ba38f5a54d559c76e03f52aa2c740a6dabb777ef7a |