关于#python#的问题:怎么读取一个Excel中的数据,批量替换不同Word中的局部信息

怎么读取一个Excel中的数据,批量替换不同Word中的局部信息

img

from docxtpl import DocxTemplate
from openpyxl import load_workbook
import os
def replace(obj):
    if obj is None:
       obj = ''
       return obj
 # 加载要填入的数据
wb = load_workbook(r"C:\Users\MSI2\data(1).xlsx")
ws = wb['Sheet1']
contexts = []
for row in range(2, ws.max_row + 1):
    name = ws["A" + str(row)].value
    c_name = ws["B" + str(row)].value
    code = ws["C" + str(row)].value
    num = ws["D" + str(row)].value
    time = ws["E" + str(row)].value
    time = str(time)[:-9]
    money = ws["F" + str(row)].value
    address = ws["G" + str(row)].value
    replace_peo = ws["H" + str(row)].value
    
    context = {"name": name, "c_name": c_name, "code": code, "num": num, "time": time,
               "money": money, "address": address, "replace_peo": replace_peo}
    contexts.append(context)
contexts
# 创建要保存的文件夹
os.mkdir("./所有合同")
for context in contexts:
    print(context)
    tpl = DocxTemplate(r"C:\Users\MSI2\A公司(1).docx")
    tpl.render(context)
    tpl.save("./所有合同/{}的劳动合同.docx".format(context["name"]))
 
 
 
 
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1055652
  • 你也可以参考下这篇文章:python-读取excel数据并对word中内容进行替换
  • 除此之外, 这篇博客: Python将Excel数据自动填充到Word指定位置中中的 实现 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    代码如下

    from docxtpl import DocxTemplate
    from openpyxl import load_workbook
    import os
    def replace(obj):
        if obj is None:
           obj = ''
           return obj
     # 加载要填入的数据
    wb = load_workbook(r"C:\Users\MSI2\data(1).xlsx")
    ws = wb['Sheet1']
    contexts = []
    for row in range(2, ws.max_row + 1):
        name = ws["A" + str(row)].value
        c_name = ws["B" + str(row)].value
        code = ws["C" + str(row)].value
        num = ws["D" + str(row)].value
        time = ws["E" + str(row)].value
        time = str(time)[:-9]
        money = ws["F" + str(row)].value
        address = ws["G" + str(row)].value
        replace_peo = ws["H" + str(row)].value
        
        context = {"name": name, "c_name": c_name, "code": code, "num": num, "time": time,
                   "money": money, "address": address, "replace_peo": replace_peo}
        contexts.append(context)
    contexts
    # 创建要保存的文件夹
    os.mkdir("./所有合同")
    for context in contexts:
        print(context)
        tpl = DocxTemplate(r"C:\Users\MSI2\A公司(1).docx")
        tpl.render(context)
        tpl.save("./所有合同/{}的劳动合同.docx".format(context["name"]))
    
    
    
    
    

    效果

    在这里插入图片描述
    在这里插入图片描述

  • 您还可以看一下 董付国老师的Python可以这样学(第八季:课堂教学管理系统设计与开发实战)课程中的 Word试卷生成功能设计与实现小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    由参考资料可以看出,针对这个问题的解决方案是使用Python读取Excel文件中的数据并使用DocxTemplate将数据批量替换到多个Word文件中的不同位置。具体步骤如下:

    1. 导入所需的库:openpyxl和docxtpl。
    from openpyxl import load_workbook
    from docxtpl import DocxTemplate
    
    1. 加载Excel文件并获取指定Sheet中的数据。
    #加载Excel文件并获取Sheet数据
    wb = load_workbook('data.xlsx')
    ws = wb['Sheet1']
    
    #获取Sheet中所有行的数据
    rows = []
    for row in ws.iter_rows(min_row=2):
        rows.append([cell.value for cell in row])
    
    1. 加载Word文件模板。
    #加载Word文件模板
    tpl = DocxTemplate('template.docx')
    
    1. 循环读取每一行Excel数据并渲染到Word模板中。
    #循环读取每一行Excel数据并渲染到Word模板中
    for row in rows:
        context = {
            'name': row[0],
            'age': row[1],
            'gender': row[2],
            'address': row[3],
            'email': row[4]
        }
        tpl.render(context)
        tpl.save('output/{}.docx'.format(row[0]))
    
    1. 最后,将渲染后的Word文件保存到指定的文件夹中。

    完整代码如下:

    from openpyxl import load_workbook
    from docxtpl import DocxTemplate
    
    # 加载Excel文件并获取Sheet数据
    wb = load_workbook('data.xlsx')
    ws = wb['Sheet1']
    
    # 获取Sheet中所有行的数据
    rows = []
    for row in ws.iter_rows(min_row=2):
        rows.append([cell.value for cell in row])
    
    # 加载Word文件模板
    tpl = DocxTemplate('template.docx')
    
    # 循环读取每一行Excel数据并渲染到Word模板中
    for row in rows:
        context = {
            'name': row[0],
            'age': row[1],
            'gender': row[2],
            'address': row[3],
            'email': row[4]
        }
        tpl.render(context)
        tpl.save('output/{}.docx'.format(row[0]))
    

    最后,将Excel文件、Word文件模板和Python脚本放在同一个目录下,运行脚本即可生成渲染后的Word文件,保存在output文件夹中。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^