今天因为老爸下乡扶贫工作,要填很多word表格,一张表一张表填写显然太慢了,就简单写了一个python代码去处理。大体上就是使用docx库来批量填写word表格,至于word表格的数据来源是使用xlrd库从excel表格中读取出来的。
要填的word表格就是下面这张表,需要填写的为高亮部分。
人员信息来自excle表格,如下图所示:
每个人填写一张word表格,word表格可能是由于单元格合并的原因,许多cell并不是看上去的位置,如要填写身份证号码的单元格看起来像是第二行第四列的单元格(cell(1,3)),其实是cell(1,6)。总之这个word表格的格式非常的乱七八糟,python操作起来非常困难,试了好久才找到每一个需要填写的元素的位置,还有单元格的paragraphs和runs的数量、内容!!!
import docx
from docx import Document
import xlrd
#document对象、姓名、身份证号、电话、户籍所在地(村)、文化程度、正在填写的表格序号
def Wirte2Docx(doc, name, id, phoneNumber, resAddr, cultureLevel, helthLevel, tableNum):
#获取word文档中的表格list
tables = doc.tables
#确定要填写第几张表 modify
table = tables[tableNum]
#获取要填写或修改的cell(表格的单元格)
nameCellRun = table.cell(1,1).paragraphs[0].runs[0] #run对象可以看做文本和格式的结合体,修改run.text即仅修改文本,保留原有的格式。
idCellRun = table.cell(1,6) #没有run对象 乱七八糟的表格格式!!!!烦死
phoneCellRun = table.cell(1,20)
#经测试发现这个cell有两个run:第一个为省