前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【小白必看】利用Python生成个性化名单Word文档

【小白必看】利用Python生成个性化名单Word文档

作者头像
全栈若城
发布2024-02-29 19:31:40
870
发布2024-02-29 19:31:40
举报
文章被收录于专栏:若城技术专栏若城技术专栏

前言

对于需要批量生成个性化名单的任务,使用Python可以很方便地完成。本文介绍了如何使用Python的openpyxl和docxtpl库,从Excel表格中获取数据,并根据指定的Word模板生成相应的个性化名单文档。通过学习这个示例,您可以了解到Python在处理办公自动化任务中的强大能力。

所需文件及文件格式说明

excel数据如下

word 模板如下

文件目录格式及生成后的文件

导入所需的模块:

代码语言:javascript
复制
import openpyxl
from docxtpl import DocxTemplate

这里导入了两个模块。openpyxl 用于操作 Excel 文件,DocxTemplate 是一个用于生成 Word 文档的模板类。

打开 Excel 文件:

代码语言:javascript
复制
excel = openpyxl.load_workbook('名单.xlsx')

使用 openpyxl 模块的 load_workbook 函数打开名为 ‘名单.xlsx’ 的 Excel 文件,并将返回的工作簿对象赋值给变量 excel

选择工作表:

代码语言:javascript
复制
sheet = excel.worksheets[0]

通过 excel.worksheets 属性选择第一个工作表,并将其赋值给变量 sheet

获取数据列表:

代码语言:javascript
复制
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 文档:

代码语言:javascript
复制
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 函数将 namesworks 列表的元素一一对应,然后通过 for 循环遍历每个人名和工作。

在循环中,首先打印出人名和工作,然后通过 DocxTemplate 类打开名为 ‘template.docx’ 的模板文件,使用 context 字典定义要替换的内容,namework 分别表示模板中的标记和要替换的值。接着,调用 render 方法填充模板内容,再使用 save 方法将生成的文档保存为以人名命名的 Word 文件。最后,打印出生成完成的提示信息。

完整代码

代码语言:javascript
复制
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,享受自动化带来的便利与效益。祝愿您在编程的道路上越走越远,不断探索新的可能性!

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 所需文件及文件格式说明
    • excel数据如下
      • word 模板如下
        • 文件目录格式及生成后的文件
        • 导入所需的模块:
        • 打开 Excel 文件:
        • 选择工作表:
        • 获取数据列表:
        • 遍历数据并生成 Word 文档:
        • 完整代码
        • 结束语
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com