千家信息网

如何使用Python根据模板批量生成docx文档

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"如何使用Python根据模板批量生成docx文档",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Python根据模板批量生成
千家信息网最后更新 2026年11月01日如何使用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安全错误 数据库的锁怎样保障安全 科技互联网 广州万易互联网科技有限公司 广州紫鲸互联网科技有限公司 互联网科技工作委员会 互联网科技工作委员会主任 互联网与新科技 百单互联网科技有限公司 融势互联网科技 厦门比较好的科技互联网公司 赶超互联网科技 微信多开 阿大互联网科技有限公司 未来五年的互联网科技 特约风豹互联网科技为什么扣费 上海钢联属于互联网科技股吗 雨阳互联网卡科技有限公司 新氧科技和美国互联网有关系吗 科技互联网专业工作会议发言稿 长沙易易互联网科技有限公司 互联网科技创业计划的风险分析 互联网 科技节活动 微视频大赛 广东万易互联网科技有限公司惠州分公司 博彦科技互联网金融 撒么互联网科技公司 互联网科技博客 中国的互联网科技企业的崛起 互联网经济与金融科技 晋城互联网科技 雨阳互联网卡科技有限公司 互联网领先科技宣传片 同城互联网络科技
0