Python将Excel数据插入Word模板生成详细内容文档

最近在实际工作中遇到的一个情况是,每个月固定时间要报送一批文档,文档的内容相似,有固定的模板,我这么懒的人肯定要想一个一劳永逸的办法。下面把搜索发现的情况记录一下,以备以后需要。

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,不是先另存为转化。

推荐阅读更多精彩内容