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

docx-mailmerge的Python项目详细描述


Build StatusPyPI

对office open xml(docx)文件执行邮件合并。可用于任何 无需安装Microsoft Office Word的系统。支持Python2.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添加到所需的行中 指定为模板。将此合并字段的名称提供为anchor 参数。第二个参数包含具有 合并字段替换。

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版开始,还提供了模板合并功能。 这将为列表中的每个项创建模板的副本,执行合并, 用分页符把它们分开。

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

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

document.write('output.docx')

有关更多信息和示例,请参见单元测试和这篇关于实用业务python的漂亮文章Populating MS Word Templates with Python

待办事项/愿望清单

  • 图像合并。

贡献

  • 在github上派生存储库并开始黑客攻击
  • 创建/修复单元测试
  • 发送包含更改的拉取请求

单元测试

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

python -m unittest discover

学分

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中的图像动画GIF?   编译中的数组问题:java中csv文件拆分中的符号错误   java在maven项目中使用JDBC连接到Athena   安卓属性文件未通过java加载   macos如何强制Java应用程序登录到网络代理?   java有序二叉树,使用树排序按升序打印字符串   java如何使这个2D数组向右旋转90度?   上次修改的Java文件返回0   递归泛型/继承中的oop Java绑定不匹配   java如何在javamail api中将文件作为附件上传?   Android编程中的java:如何调用接受View类型参数的方法?   java在Spring数据JPA中嵌入对象而不是链接   需要一些将Java代码Android Studio移植到C#Visual Studio的帮助吗   java Akka Http大部分cpu时间都花在不安全的环境中。公园()   javaweb应用中的数据库角色管理   报告中未显示java Jasper映射组件   java如何使用SKMaps解决冲突依赖。广口番石榴   屏幕阅读器无法访问java QT的QWebView小部件   java无法获得第一个匹配项(与组无关)