python根据表格内容修改word

有两张表格,一张放着各产品简介,一张放着各产品的参数说明,需要提取各简介,然后再根据参数补充内容,结合在一起生成各个产品的综合介绍。虽然在产品数量不多的情况下可以手动整理,但还是比较麻烦而且容易出错。这里借助了python来进行。

1.读取EXCEL数据

作为数据处理的王者,python读取EXCEL有很多方法,有许多相关的库。这里采用了opeanpyxl,先加载表格,然后再选中活动工作表,就可以读取数据了。

from openpyxl import load_workbook
wb = load_workbook('1.xlsx')
ws = wb.active
wb2 = load_workbook('2.xlsx')
ws2 = wb2.active
...
a = sheet.cell(row=i, column=2).value

代码和上面的差不多,“1.xlsx”中放了简介,“2.xlsx”中是参数,因为每个表格只有一张工作表,直接选中活动工作表.active就可以了。然后用指定行列的方法读取单元格的值。

需要注意的是,openpyxl的序号是从1开始的,而不像一般的编程习惯是从0开始,使用时需要注意。

2.修改word

修改word主要参考了以下的文章:实例5:用Python批量生成word版邀请函

使用python操作word采用的库是docx,使用时需要先制作一个模板,然后方便对想要的地方进行修改。修改的话主要用到类似下面的语句:

doc.paragraphs[5].runs[2].text=XXXXXX

paragraphs 表示第几段,一个回车符号算一个paragraphs,从0开始计数,runs指每一段中不同的字体格式,空格或者换行符有时候也算,这里我也不太懂run的计算方式,不过可以通过试运行来调整。以下面的文本为例:

python word设置word表格框线 python修改word表格_python


如果我要替换ZZZ处的内容,就是doc.paragraphs[3].runs[2].text,因为是第四个回车处,第三个不同字体格式处。

明确了替换规则后就可以对找到需要修改的地方,然后把从EXCEL中读取到的数值写入进去,最后保存一下即可。

打开word和保存word的语句如下所示:

import docx
doc=docx.Document('introduction.docx')
...
doc.paragraphs[5].runs[2].text=XXXXXX
...
doc.save(name+'.docx')