python学习—详解word邮件合并

系列文章目录

python学习---合并TXT文本文件
python学习---统计嵌套文件夹内的文件数量并建立索引表格
python学习---查找指定目录下的指定类型文件
python学习---年会不能停,游戏抽签抽奖
python学习---循环语句-控制流
python学习---合并多个Excel工作簿表格文件
python学习---批量复制并重命名文件夹


文章目录


功能说明

最近有个工作,是某个高速公路的征地项目,需要给高速公路占地的某县下辖的几个乡镇22个村的2000多户村民,按照每户征占地面积计算安置补偿费,并给每户编制一张固定格式的《征地补偿安置协议书》。笨方法当然是人海战术,每个人对照表格往word文档里面复制粘贴了。

聪明人当然不能用笨方法,况且我也没有那么多帮手,这么大量的word工作,又有固定模板,直接想到了word的邮件合并功能。

(知识点) 关于Word 的邮件合并功能

Word 的邮件合并功能是一种可以批量处理文档的功能。它将包含固定内容的 主文档 与包含变化信息的 数据源文档 相结合,从而生成个性化的批量文档。数据源可以是 Excel 工作表、Access 文件、MSSQL Server 数据库等。

主文档则是具有固定格式和通用内容的 Word 文档,如未填写具体收件人信息的信封、信件模板等。

该功能常用于批量打印信封、信件、请柬、工资条、个人简历等。

本文章目标为:

  • 1 把固定格式的空白《征地补偿安置协议书》作为 主文档
  • 2 把村集体提供的,每家每户占地面积经过测绘核定的统计表,经过数据处理,作为 数据源文档
  • 3 开始邮件合并,插入数据域,预览并完成合并。

1 准备主文档模板

  • 工作内容:创建或打开一个 Word 文档作为主文档,即信函的模板。确定信函格式、固定内容,并预留插入变化信息的位置。

本次工作的主文档如下图:

如图可见,红色部分是每家每户不同的地方,也就是每次需要替换的地方,也就是邮件合并的数据域,剩下的区域都是不变的。

2 准备数据源

  • 工作内容:创建或准备包含收件人等变化信息的数据源,如 Excel 工作表。工作表中每一行代表一个收件人信息,每一列对应不同信息字段,如姓名、地址、称呼等。

回到本文工作情景,工作表的每一列,代表《征地补偿安置协议书》中的1个数据域红色,如某某镇某某村、村民户主姓名、面积、金额。列的数量可以很多,但至少每个红色数据域需要单独成1列。

工作表的每一行,代表一户,也就是一张《征地补偿安置协议书》,这个村有多少户就应该有多少行内容。

如下图,是整理好的一个Excel 工作表:

  • 表格首行F1、F2、F3。。。。。F18是列的索引名,方便记忆某某镇某某村是F18列,村民户主姓名是F2列,面积是F7列等;
  • 表格F17列,是把计算补偿金的钱数,换算成中文大写了,换算的公式如下:P4代表表格单元格16610,提前把万元换算成元了;
python 复制代码
=TEXT(ABS(P4),"[DBNum2]")
  • 表格F18列村名,我这里是每个村1张 Excel 工作表,所以村名是一样的,原则上可以不用设置数据域的;如果很多村信息放在一张表格中,记得这里修改;
  • 注意: word主文档 和 Excel 工作表最好放入同一个文件夹,邮件合并功能等于把这俩文件绑定 了,要保证后期不改变位置和不能再更改文件名,否则会导致连接好的邮件合并找不到数据源而失败。如下图所示:

3 开始邮件合并

  • 工作内容:
  • 1.打开 Word 模板,切换到 "邮件" 分组,在 "开始邮件合并" 分组中单击 "开始邮件合并" 按钮,选择 "邮件合并分步向导" 命令,打开 "邮件合并" 任务窗格。按照向导依次选择文档类型为 "信函",使用当前文档作为开始文档,选取收件人,即之前准备好的数据源;
  • 2.将光标定位到主文档中需要插入数据的位置,点击 "插入合并域" 下拉菜单,选择相应字段,如姓名、地址等,将数据源中的信息插入到主文档中;
  • 3.插入完所有需要的域后,点击 "预览信函" 按钮查看生成的信函内容是否正确。

具体操作见下图所示,注意红色字体标注内容,是需要注意的点:

  • 选择收件人-使用现有列表:找到设置好的 Excel 工作表,常用的格式就是表格文件,也可以是Access MDB数据库,TXT文本文档,支持的格式如下图:
  • 编辑收件人列表: Excel 工作表中,表头位置为列名称,表格最后一行一般都是合计,首尾这些不需要邮件合并的行可以提前关闭。
  • 插入合并域:把所有需要更新的位置,替换为数据源表格的 列索引值,我的列索引值 是F1、F2。。。。,也可以直接把表头值作为列索引值,个人习惯。如果选择F1、F2这种,需要提前记录一下 列对应的 数据域,如F2表示户主姓名,F18表示村名等。
  • 突出显示合并域:开启后,设置完毕的数据域会增加阴影;关闭后,阴影消失。
  • 预览结果:开启后,数据域直接显示邮件合并的结果,即 表格中对应的数据,更加直观,如XX镇乙村;关闭后,显示 列索引值。
  • 预览:首个记录,上一个记录、下一个、末尾记录。方便查询

4 完善不足

从邮件合并的预览效果可知,面积值设置的是公顷保留4位小数,补偿金额值是万元保留4位小数,遇到数字结尾是 0 的时候,在word中并没有显示出来。

这个跟数据源Excel 工作表 干系不大,即使Excel 工作表设置了数字格式强制显示4位小数,在word中仍然会舍掉。

这就需要在word中,给这个数据域使用代码强制显示4位小数。

(知识点) 邮件合并中数字强制4位小数

在 Word 邮件合并功能里,按下 Alt + F9 组合键,能够实现显示或隐藏域代码的操作。

  • 显示域代码:正常情况下,文档里展示的是合并域的结果(也就是从数据源获取的数据)。要是你按下 "Alt + F9" 组合键,原本显示的数据-就会被对应的域代码所替代,这样你就可以看到 Word 实际使用的指令了。
  • 隐藏域代码:当你再次按下 "Alt + F9" 组合键,域代码又会变回正常显示的数据,方便你查看文档的实际内容。
  • 在显示域代码的情况下,给数字域增加强制小数位代码,如下:在单元格后面,键入 \#0.0000 表示强制数字4位小数,如果想设置2位小数,改为 \#0.00 即可。
python 复制代码
{ MERGEFIELD F13 \#0.0000 }                          #表示 强制4位小数
{ MERGEFIELD F13 \#0.00 }                          #表示 强制2位小数

5 输出合并文档

  • 工作内容:确认邮件合并的内容无误后,点击 "完成合并" 按钮,选择是将合并结果输出到新文档还是直接打印。

合并方式有3种:

  • 全部输出:输出所有行记录,全部记录生成1个新的多页word文档。
  • 当前页:输出鼠标点击的页面,生成1个单页的word文档。这个选项主要用于后期修改某一行数据,单独输出修改页使用。
  • 输出区间:从1至20页,输出XX村的记录为1个多页word文档,从21至40页,输出XX村记录为一个新word文档。

6 进阶功能:邮件合并图片

日常工作中,还有一种情况:需要把图片插入到word文档中的表格,表格的每个单元格对应不同的图片,如果图片量很大的话,也是可以使用邮件合并功能的。

同样需要 主文档数据域表格,首先准备这些资料。

(1)收集图片列表

打开保持图片的文件夹,需要这些图片的名称列表,用于组织图片的绝对路径的列表。

收集方法可以使用批处理脚本,方法:新建txt文档名称随意,写入下面的代码,保持文档,修改后缀名为: .bat,放入图片的文件夹,双击运行,就会生成图片文件的列表了。

python 复制代码
dir *.jpg /b/s> list.xls

如果想直接保存列表为 txt文本格式,也是可以的,修改代码如下:

python 复制代码
dir *.jpg /b/s> list.txt

(2)整理数据源表格

打开生成的图片列表,根据 主文档的要求,增加一些字段内容,整理好数据源表格。可以另存为表格文件,也可以保存为txt文本文件,我这次保存为 list.txt 文本文件。

特别注意事项: 图片路径中的 单斜杆 \ 必须要修改成 双斜杠 \ \ ,这是代码能够正确识别路径的关键。

下图是保存成 txt文本文档后的效果。

(3)打开主文档,开始邮件合并

我就简单演示一下操作过程,主文档设置有3个数据域:序号、图片名称、附图。

注意: 插入图片的预览效果是不显现的,只有在输出成新word文档之后, 按 F9 刷新 之后,图片才能显现出来,显示出图片之后保存文档即可。

  • 图片的数据域:插入------文档部件------域------INCLUDEPICTURE
  • 图片的文件名:这里随便起个名字 AAA ,只是占位使用,无意义
  • 替换文件名为图片路径:按下ALT+F9组合键,切换到代码状态,将 刚才起的文件名连同两边的引号一起,替换为 图片路径。切记路径中为双斜杠。
  • 按 F9 刷新文档:按下ALT+F9组合键,切换回预览状态,按 F9 键 刷新文档,有可能会显示出图片,不显示也无所谓。继续下一步
  • 合并输出生成新word文档,ALT+A 组合键全选文档内容, 按 F9 键 刷新,如果前面操作正确的话,图片就会显现出来了。

(4)完善不足,恢复图片的原始比例

从上图可以看到,合并后的文档,虽然能够显示出图片,但是图片的尺寸发生了变化,图片的长宽变成了1:1的矩形,改变了图片的原始长宽比,导致画面变形扭曲。

只需要稍微调整代码,就可以恢复图片的原始比例。

打开 主文档, 按下ALT+F9组合键,切换到代码状态,可见图片数据域的代码如下:

python 复制代码
{ INCLUDEPICTURE { MERGEFIELD 图片路径 }  \*MERGEFORMAT }

只需要删除 \*MERGEFORMAT 即可,注意不要删除 }大括号,否则代码报错。

python 复制代码
{ INCLUDEPICTURE { MERGEFIELD 图片路径 }   }

此时,再次 合并输出生成新word文档,按 F9刷新文档,图片显现,并且恢复原始长宽比例。

7 总结

word的邮件合并功能非常强大,这里只做常用功能介绍。日常办公软件也有很强大的功能,学会这些功能在日常工作中会事半功倍。

Word 的邮件合并功能具有以下优点:

  • 提高效率:能够将主文档与数据源相结合,自动批量生成多个文档,避免了逐个手动编辑的繁琐过程,极大地节省了时间和精力,尤其适用于处理大量相似但又有部分差异的文档。
  • 确保准确性:只要数据源和主文档设置正确,就可以保证合并后的文档内容准确一致,减少了因手动输入可能导致的错误,提高了文档的质量和规范性。

关于 wps软件能否使用邮件合并功能,刚好有朋友的电脑安装的是wps,经过比对测试,wps软件的文档也是可以使用邮件合并功能的,只是个别名词叫法不同,最后的效果相差无几。

关于 deepseek智能助手,应该也可以接入办公软件实现一些高级操作,后续会继续研究,有兴趣 的朋友大家一起交流啊。

相关推荐
程序小武25 分钟前
python编辑器如何选择?
后端·python
一叶知秋121133 分钟前
UV管理python项目
python
AndrewHZ39 分钟前
【图像处理入门】2. Python中OpenCV与Matplotlib的图像操作指南
图像处理·python·opencv·计算机视觉·matplotlib·图像操作
golitter.1 小时前
langchain学习 01
python·学习·langchain
houliabc1 小时前
【2025年软考中级】第二章2.2 程序设计语言的基本成分
笔记·学习·证书·软考
一叶知秋12112 小时前
LangChain Prompts模块
python
杨DaB2 小时前
【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议
java·笔记·学习·java-ee
量化金策2 小时前
截面动量策略思路
python
心软且酷丶3 小时前
leetcode:7. 整数反转(python3解法,数学相关算法题)
python·算法·leetcode
逾非时3 小时前
python:selenium爬取网站信息
开发语言·python·selenium