python execl表中的内容转换为word,并批量转换为pdf
python execl表中的内容自动填写到word模板,word批量转换为pdf
1.1需求
1.需求:1)批量制作学生成绩单,要从excel表格中将每个人的数据导入到docx成绩单中,重复量很大,因此可以使用python高效解决。2)将word批量转换为pdf。
2.渲染:为了让模板内容不变动,这里使用了类似jinja2的渲染引擎,使用{ { }}插值表达式把数据插入进去。也可以使用{% %}循环,条件语法等。(感兴趣可以自行查找)
3.模板
- 成绩单模版.docx(在需要插值的位置填充 { {}} 表达式)
- 成绩单表格模板.xlsx(原始数据)
1.2实现execl表中的内容转换为word
1.2.1环境准备
环境准备
1模板
成绩单模版.docx(在需要插值的位置填充 {
{
}} 表达式)
成绩单表格模板.xlsx(原始数据)
2库
#操作xl表格的库
pip install docxtpl
#操作docx文档的库
pip install openpyxl
1.2.2Python代码
###程序功能说明:该功能是将excel里的数据向一个word模板里填充数据,并保存为一个word文档。
from docxtpl import DocxTemplate
from openpyxl import load_workbook
import os
def replace(obj):
if obj is None:
obj = ''
return obj
#加载要填入的execl数据
# elxFile =r''
# wordFile = r''
# datapath = r''
wb = load_workbook("./成绩单表格模板.xlsx")
#选择Sheet
ws = wb['Sheet1']
#最大row行数
max_row=ws.max_row
#最大col列数
max_col=ws.max_column
contexts = []
#从第二行开始执行,最大次数为最大行数+1
for row in range(2, max_row + 1):
#cell两个参数:行数,列数,按“A”列,“当前row行”返回值
student_number = ws["A" + str(row)].value
class_name = ws["B" + str(row)].value
teacher = ws["C" + str(row)].value
Chinese_name = ws["D" +