实际上对于用户来说,创建所需的模板会更加简单,该模板支持Word中所需的所有自定义格式,而不是尝试使用HTML + CSS。幸运的是,有一个库支持在python中进行MS Word 邮件合并。这种方法的优点是可以在任何系统上运行 - 即使没有安装Word。 背景使所有这一切成为可能的包叫做 docx-mailmerge。它是一个成熟的包,可以解析MS Word docx文件,找到 合并字段 并将您需要的任何值填充给它们。该包还支持一些辅助函数,用于填充表并生成具有多个分页符的单个文件。我知道标准的Word方法是将此进程称为 mailmerge ,但本文中的这个 “mailmerge” 可以是一个有用的模板系统,可以用于更复杂的解决方案,而不仅仅是填充文档中的 名称和地址。

安装

docx-mailmerge 需要依赖 lxml ,所以需要先安装lxml,再安装 docx-mailmerge

pip install lxmlpip

install docx-mailmerge

Word合并字段为了使docx-mailmerge正常工作,您需要创建标准Word文档,并定义适当的 合并字段 。以下示例适用于Word 2016.其他版本的Word应该类似。实际上花了我一段时间来弄清楚这个过程,但是一旦你做了几次,这很简单。启动Word并创建基本文档结构。然后将光标放在应插入 数据的位置,并选择插入 - >文档部件 - > 域

从“字段”对话框中,从“字段名称”列表中选择“MergeField”选项。在“字段名称”中,输入字段所需的名称。在这种情况下,我们使用的是商业名称。

单击确定后,您应该在Word文档中看到类似这样的内容:<< From >>。您可以继续创建包含所有必填字段的文档。

image

简单的合并

创建Word文档后,填充字段值是一项很简单的操作。

from mailmerge import MailMerge

import datetime

template = "PracticalPython.docx"

我们的 PracticalPython.docx 文件可以看做是用来给大家发祝福邮件模板。

下面我们先看看docx文档中有哪些合并字段

document = MailMerge(template)

print(document.get_merge_fields())

{'Date', 'FromUserName', 'From', 'To', 'ToUserName'}

我们发现 PracticalPython.docx 文档中有我们上图邮件模板中设计的几个 合并字段,如 From, date, FromUserName, To, ToUserName 。下面我们对这几个变量进行填充。

document.merge(

From='1008611@qq.com',

FromUserName='芈小米',

To = '1101011@qq.com',

ToUserName='关注者的昵称',

Date='{:%d-%b-%Y}'.format(datetime.date.today())

)

#输出的docx文件

document.write('output.docx')

这是简单的Word文档填充效果

插入表格生成模板时的另一个常见需求是有效地填充值表格中的值。在我们的示例中,我们可以在包含客户购买历史的信件上附上展览。在完成模板时,我们不知道要包含多少行,并且 每个字段 的填充将会非常快。使用merge_rows可以使表格填充更容易。在本部分构建模板,请创建一个包含1行的标准Word表,并将字段插入相应的列中。无需特殊格式。它应该看起来像这样:

现在我们定义了一连串的字典,用于填充到表格中去

document2 = MailMerge('purchasehistory.docx')

sales_history = [{

'prod_desc': 'Red Shoes',

'price': '$10.00',

'quantity': '2500',

'total_purchases': '$25,000.00'}, {

'prod_desc': 'Green Shirt',

'price': '$20.00',

'quantity': '10000',

'total_purchases': '$200,000.00'}, {

'prod_desc': 'Purple belt',

'price': '$5.00',

'quantity': '5000',

'total_purchases': '$25,000.00'}]

document2.merge_rows('prod_desc', sales_history)

document2.write('output-table.docx')

最终结果是每行填充了我们需要的值,并保留了我们在模板文档中定义的默认表格式:

python课程报告模板_Python制作WORD报告相关推荐

  1. 第四次c语言实验报告模板,C语言实验报告模板.doc

    C语言实验报告模板.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所得 ...

  2. 【收藏】Python利用Excel+模板批量生成word文件

    Python利用Excel+模板批量生成word文件 最近帮朋友批量生成小区业主物业费未缴的律师函.朋友那有物业那边的表格数据,包括楼栋-房间号.业主姓名.欠费日期.欠款金额等信息.目的是需要将这些表 ...

  3. pythonword编辑报告模板_使用Python制作WORD报告

    今天的另一篇文章 "使用Pandas.Jinja和WeasyPrint制作pdf报告" 中我分享了如何使用HTML模板来创建pdf报告的方法. 虽然pdf很不错,但更多的人实际上在 ...

  4. python docx 合并文档 图片_使用Python制作WORD报告

    在前面一期文章 使用Pandas.Jinja和WeasyPrint制作pdf报告 中我分享了如何使用HTML模板来创建pdf报告的方法. 虽然pdf很不错,但更多的人实际上在用微软的WORD来操作文档 ...

  5. 【Python办公自动化】使用reportlab制作pdf报告

    原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接.作者信息和本声明. Python使用folium制作地图并生成png图片 第一章 folium的方法和类的介绍(思维导图) 第二章 ...

  6. python将Excel数据自动生成Word报告【Pyhon-docx\openpyxl】

    我写在了知乎,图片没有搬运过来.链接:https://zhuanlan.zhihu.com/p/371767402 需求:日常工作中,需要对Excel表格的数据进行筛选计算整理,然后将数据做成Word ...

  7. python自动化部署工具_Python + Allure(报告)+ Jenkins(持续集成)接口自动化测试环境搭建...

    (这个是内部分享文档,侧重于测试报告的生成以及持续集成,至于接口框架的内部组织可以按照自己的想法来实现,有问题欢迎留言) 1.环境: • 操作系统:windows 64位 • 软件环境:python3 ...

  8. 计算机维修实训报告模板,[计算机维修实验报告模板.doc

    [计算机维修实验报告模板 西南大学 实 验 报 告 课程名称:计算机维修技术 第一学期 年级: 专业班级 : 学生姓名 : 学号 指导教师 : 计算机与信息科学学院制 实验项目名称 实验时间2015 ...

  9. 简单可行性报告模板_项目可行性报告模板分享!第三章主要内容

    项目可行性报告模板分享!第三章主要内容如下: 第三章 市场分析与建设规模 市场分析在可行性研究中的重要地位在于,任何一个项目,其生产规模的确定.技术的选择.投资估算甚至厂址的选择,都必须在市场需求情况 ...

  10. 第四次c语言实验报告模板,C语言实验报告模板完成版

    C语言实验报告模板完成版 <高级语言程序设计> 学 生 实 验 报 告 专业:计算机科学与技术(非师范) 学号:12600120 姓名: 李奕 实验一 C程序的运行环境和使用方法 1. 实 ...

最新文章

  1. 用模板实现单例模式(线程安全)、模板方式实现动态创建对象
  2. Alchemy环境的搭建
  3. 2009中国海上大阅兵全视频
  4. mysql 8添加账号赋予权限
  5. 魅族用鸿蒙系统吗,魅族宣布接入鸿蒙是怎么回事?魅族手机可以刷鸿蒙系统吗?...
  6. [蓝桥杯2017初赛]Excel地址
  7. c语言c1变成e并输出,【图片】(原创)用纯C变了个变色输出字符的程序。。。【c语言吧】_百度贴吧...
  8. MVC Controller与ActionResult的返回值
  9. 计算一个时间,是否在规定的时期时间之间
  10. 苹果再因“降频门”遭遇集体诉讼,11.5万用户出拳
  11. 去中心化NFT交易生态系统Mochi.Market将在DAO Pad进行SHO
  12. 2021-2025年中国伊维菌素原料药行业市场供需与战略研究报告
  13. spring 定时任务---task
  14. java 临时文件 删除_Java临时文件何时被删除?
  15. RFM模型实现用户分层
  16. Android ScrollView滚动区高度和子LinearLayout的layout_marginTop的关系
  17. 老鱼Python数据分析——篇十三:“选股宝”数据下载代码优化
  18. cocos2dx 植物大战僵尸 5 塔基Terrain的更新
  19. 个人免签码支付源码+监控APP【野马资源网】
  20. 随笔---Beego中的routers包个人的理解

热门文章

  1. 7-1 宿舍谁最高? (20 分)
  2. L1-039 古风排版 (20 分)—团体程序设计天梯赛
  3. Android 自定义View(一)常用属性
  4. 七. 并发编程 (进程队列)
  5. ChengDu University Mental Health Test 需求分析文档
  6. Java50道经典习题-程序7 处理字符串
  7. C++ 构造函数中抛出异常
  8. [转载] Java并发编程:Callable、Future和FutureTask
  9. 从Java类库看设计模式(4)
  10. 通过napalm-huawei-vrp模块对华为交换机信息进行分析(ENSP模拟器)