如何使用Python根据模板批量生成docx文档
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"如何使用Python根据模板批量生成docx文档",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Python根据模板批量生成
千家信息网最后更新 2025年11月07日如何使用Python根据模板批量生成docx文档
这篇文章主要讲解了"如何使用Python根据模板批量生成docx文档",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Python根据模板批量生成docx文档"吧!
一、需求说明
能够根据模板批量生成docx文档。具体而言,读取excel中的数据,然后使用python批量生成docx文档。
二、实验准备
准备excel数据:
这里是关于学生语数英成绩的统计表,文件名为score.xls
这是给学生家长的成绩通知书,文件名为template.doc
另外,在使用python进行实验之前,需要先安装第三方库docxtpl和xlrd,直接pip install就行:
pip install docxtplpip install xlrd
然后将xls和doc和python文件放在同一个目录下
三、代码实现
首先打开xls,读取数据:
workbook = xlrd.open_workbook(sheet_path)然后从文件中获取第一个表格:
sheet = workbook.sheet_by_index(0)然后遍历表格的每一行,将数据存入字典列表:
tables = []for num in range(1, sheet.nrows): stu = {} stu['name'] = sheet.cell_value(num, 0) stu['class'] = sheet.cell_value(num, 1) stu['language'] = sheet.cell_value(num, 2) stu['math'] = sheet.cell_value(num, 3) stu['English'] = sheet.cell_value(num, 4) tables.append(stu)接下来将列表中的数据写入docx文档,其实这个过程可以在读数据时同时进行,即读完一行数据,然后生成一个文档。
首先在指定路径生成一个docx文档:
document = Document(word_path)然后逐行进行正则表达式的替换:
paragraphs = document.paragraphs text = re.sub('name', stu['name'], paragraphs[1].text) paragraphs[1].text = text text = re.sub('name', stu['name'], paragraphs[2].text) text = re.sub('class', stu['class'], text) text = re.sub('language', str(stu['language']), text) text = re.sub('math', str(stu['math']), text) text = re.sub('English', str(stu['English']), text) paragraphs[2].text = text其实不关心格式问题的,到现在为止就已经结束了。但是这样替换后docx中被替换的文字格式也被更改为系统默认的正文格式,所以接下来是将这些改成自己想要的格式:
遍历需要更改格式的段落,然后更改字体大小和字体格式:
for run in paragraph.runs: run.font.size = Pt(16) run.font.name = "宋体" r = run._element.rPr.rFonts r.set(qn("w:eastAsia"), "宋体")最后保存文件:
document.save(path + "\" + r"{}的成绩通知单.docx".format(stu['name']))完整代码:
from docxtpl import DocxTemplateimport pandas as pdimport osimport xlrdpath = os.getcwd()# 读表格sheet_path = path + "score.xls"workbook = xlrd.open_workbook(sheet_path)sheet = workbook.sheet_by_index(0)tables = []for num in range(1, sheet.nrows): stu = {} stu['name'] = sheet.cell_value(num, 0) stu['class'] = sheet.cell_value(num, 1) stu['language'] = sheet.cell_value(num, 2) stu['math'] = sheet.cell_value(num, 3) stu['English'] = sheet.cell_value(num, 4) tables.append(stu)print(tables) # 写文档from docx import Documentimport refrom docx.oxml.ns import qnfrom docx.shared import Cm,Ptfor stu in tables: word_path = path + "\template.doc" document = Document(word_path) paragraphs = document.paragraphs text = re.sub('name', stu['name'], paragraphs[1].text) paragraphs[1].text = text text = re.sub('name', stu['name'], paragraphs[2].text) text = re.sub('class', stu['class'], text) text = re.sub('language', str(stu['language']), text) text = re.sub('math', str(stu['math']), text) text = re.sub('English', str(stu['English']), text) paragraphs[2].text = text for paragraph in paragraphs[1:]: for run in paragraph.runs: run.font.size = Pt(16) run.font.name = "宋体" r = run._element.rPr.rFonts r.set(qn("w:eastAsia"), "宋体") document.save(path + "\" + r"{}的成绩通知单.docx".format(stu['name']))感谢各位的阅读,以上就是"如何使用Python根据模板批量生成docx文档"的内容了,经过本文的学习后,相信大家对如何使用Python根据模板批量生成docx文档这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
文档
生成
数据
格式
模板
文件
宋体
成绩
表格
学习
接下来
一行
代码
内容
字体
学生
通知单
问题
准备
实验
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
好玩吧全仿趣步模式软件开发
网络安全共享机制
软件开发阶段软件测试可以分为
海南德宅佑家互联网科技股份公司
萤石云手机连不上录像机服务器
qq邮箱 服务器安全性
数据库B 树叶子结点
网络安全六级英语作文
普陀区数据库工程安防制度
眼镜行业软件开发哪种
软件开发的项目适用范围
中宏数据库是什么系统
微信对话网络安全用语
state怎么打开数据库
linux进入服务器
互联网与网络安全实验
青岛java软件开发哪家好
网络安全观后感学生
湖北大学数据库实用技术
飞鱼科技5G互联网中心
六安数智未来软件开发
网络安全基础设施是啥
业余学什么网络技术好
济南应用软件开发哪家公司好
lfpw人脸数据库
普陀区数据库工程安防制度
oa软件开发认可和丰软件
数据库投影符号读啥
鹤壁市天气预报软件开发
中国网络安全信息化工作委员会