最近在实际工作中遇到的一个情况是,每个月固定时间要报送一批文档,文档的内容相似,有固定的模板,我这么懒的人肯定要想一个一劳永逸的办法。下面把搜索发现的情况记录一下,以备以后需要。
Python有个叫做docx-mailmerge的包,它的作用简单可以理解成替换指定内容,更复杂的工作内容还没有涉及,以后遇到了再补充。
如何安装?
pip install docx-mailmerge
怎么在word中设置域,既数据需要填充的地方?
单位和家中的word存在一定的版本差异,为了统一性,以WPS为例,如图所示
image选择邮件合并,在域代码位置输入想要设置的变量名称
image image在Excel表中写出相应的数据,name只是为了和word中域的名字相同,方便对照,实际第一行的数据没有意义
image
import xlrd #引入excel读取模块
import xlwt #引入excel写入模块
from mailmerge import MailMerge #引用邮件处理模块
datafile_path = '你的数据文件.xls'
data = xlrd.open_workbook(datafile_path) #获取数据
table = data.sheet_by_name('Sheet1')
nrows = table.nrows
template = '你的模板文件.docx'
document = MailMerge(template)
for i in range(nrows): #循环逐行打印
if i > 0: #排除0项无用数据
document.merge(
name=table.row_values(i)[1]
)
wordname= table.row_values(i)[1]+'.docx'
document.write(wordname) #创建新文件
这样Excel表中有多少项数据,就会新创建多少个文档~
Python 让生活更轻松~
PS:主要特别注意的是,文件的后缀一定要是docx,不是先另存为转化。
网友评论