如何使用Python根据模板批量生成docx文档
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要讲解了"如何使用Python根据模板批量生成docx文档",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Python根据模板批量生成
千家信息网最后更新 2025年01月24日如何使用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安全错误
数据库的锁怎样保障安全
数据库怎么自然连接
软件开发的优秀学校
怎么把网页内容导入数据到数据库
贵州威宁风资源数据库
18年的网络安全主题是
数据库 in 查询语句
网络安全在浙江大学哪个学院
在数据库中存在一张表
网络安全工作重要批示
湖北电脑软件开发大概要多少钱
网络安全交易事件
nodejs管理服务器
邮政局网络安全应急预案
中国电脑服务器是什么
网络安全法的第59条讲的是
网络安全小故事用英语
网络安全监测预警平台论文
mac dhcp服务器
qt与数据库怎么连接
北京世联互联网科技有限公司
公司专网dns服务器没有响应
网络中的服务器可分为哪几种
小米手机服务器显示错误
数控系统传输软件开发
山西华锐阳软件开发
本地sql数据库无法使用
达梦数据库集群软件
数据库更改激活密钥
万方数据库怎么看论文全文
郑州软件开发外包平台