文章目录
- 前言
- 所需文件及文件格式说明
- excel数据如下
- word 模板如下
- 文件目录格式及生成后的文件
- 导入所需的模块:
- 打开 Excel 文件:
- 选择工作表:
- 获取数据列表:
- 遍历数据并生成 Word 文档:
- 完整代码
- 结束语
前言
对于需要批量生成个性化名单的任务,使用Python可以很方便地完成。本文介绍了如何使用Python的openpyxl和docxtpl库,从Excel表格中获取数据,并根据指定的Word模板生成相应的个性化名单文档。通过学习这个示例,您可以了解到Python在处理办公自动化任务中的强大能力。
所需文件及文件格式说明
excel数据如下
word 模板如下
文件目录格式及生成后的文件
导入所需的模块:
import openpyxl
from docxtpl import DocxTemplate
这里导入了两个模块。openpyxl
用于操作 Excel 文件,DocxTemplate
是一个用于生成 Word 文档的模板类。
打开 Excel 文件:
excel = openpyxl.load_workbook('名单.xlsx')
使用 openpyxl
模块的 load_workbook
函数打开名为 ‘名单.xlsx’ 的 Excel 文件,并将返回的工作簿对象赋值给变量 excel
。
选择工作表:
sheet = excel.worksheets[0]
通过 excel.worksheets
属性选择第一个工作表,并将其赋值给变量 sheet
。
获取数据列表:
names = []
works = []
for row in sheet.iter_rows(min_row=1, values_only=True):names.append(row[1])works.append(row[2])
使用
iter_rows
方法遍历工作表的每一行,并使用values_only=True
参数以只获取单元格的值,然后将第二列的数据添加到names
列表中,将第三列的数据添加到works
列表中。
遍历数据并生成 Word 文档:
for na, wo in zip(names, works):print(na, '----', wo)doc = DocxTemplate('template.docx')context = {'name': na, 'work': wo}doc.render(context)doc.save(f'{na}.docx')print(f'{na}的word-生成完毕!!')
使用 zip
函数将 names
和 works
列表的元素一一对应,然后通过 for
循环遍历每个人名和工作。
在循环中,首先打印出人名和工作,然后通过
DocxTemplate
类打开名为 ‘template.docx’ 的模板文件,使用context
字典定义要替换的内容,name
和work
分别表示模板中的标记和要替换的值。接着,调用render
方法填充模板内容,再使用save
方法将生成的文档保存为以人名命名的 Word 文件。最后,打印出生成完成的提示信息。
完整代码
import openpyxl
from docxtpl import DocxTemplate# 导入所需的模块# 打开excel
excel = openpyxl.load_workbook('名单.xlsx')
# 选择工作薄-选择第一个
sheet = excel.worksheets[0]
# 获取工作薄有多少数据
names = []
works = []
for row in sheet.iter_rows(min_row=1, values_only=True):# 将姓名和职位添加到对应的列表中names.append(row[1])works.append(row[2])# 遍历数据并生成Word文档
for na, wo in zip(names, works):print(na, '----', wo)# 打开模板doc = DocxTemplate('template.docx')# 设置内容对应关系context = {'name': na, 'work': wo}# 填充内容doc.render(context)# 保存新的文件,文件名为姓名doc.save(f'{na}.docx')# 友好提示print(f'{na}的word-生成完毕!!')
结束语
通过本文的介绍,相信您已经了解了如何使用Python生成个性化名单Word文档的方法。借助openpyxl和docxtpl库,我们可以轻松处理Excel表格中的数据,并根据指定的模板生成个性化的文档。这种方法不仅节省时间,还可以提高工作效率,尤其适用于需要大量生成名单或报告的场景。希望本文对您有所帮助,鼓励您在实际应用中灵活运用Python,享受自动化带来的便利与效益。祝愿您在编程的道路上越走越远,不断探索新的可能性!