Python 读取excel数据并填入excel,批量生成模板

一、问题-来源

前几天,我姐遇见了一个难题:需要从excel表格中不断读取数据并生成个人信息模板

二、问题-困难

1.首先我想到了在word当中生成个人信息模板,但是生成的模板格式错乱很严重,自己又不善精通调整;其次通过word导入excel的办法的确可以生成正确格式的个人信息表,但是无法通过进行信息填入。 2.使用技术是:openpyxl库进行excel数据读取,pandas库进行数据的写入

三、问题-解决

Excel个人信息模板图: 数据表如下图所示:

源代码如下所示:

# coding:<encoding name> : # coding: utf-8
import os
import time

import pandas as pd
import openpyxl


def main():
    # 数据源表位置
    wb = openpyxl.load_workbook(rC:Users22815Desktop12.xlsx)
    ws = wb[Sheet1]
    # word文件夹模板位置(可改文件夹名字)
    file_path = rC:Users22815Desktop身份信息生成
    data = pd.read_excel(rC:Users22815Desktop	est.xlsx)
    # 如果不存在上面的文件夹,则创建。
    if not os.path.exists(file_path):
        os.makedirs(file_path)
        print("创建文件夹成功")
    else:
        print("文件夹已存在:" + file_path)
        print("正在创建子文件夹,请稍后……")
        # 以当前时间创建文件名,这样每次生成都有记录
        documentName = time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())
        file_path = file_path + \ + str(documentName)
        os.makedirs(file_path)
    # 遍历数据源一个一个取出数据
    for a, b, c, d, e, f, g, h, i, j in zip(
            data[姓名], data[性别], data[身份号码], data[电话], data[家庭住址]
            , data[工种], data[编号], data[时间], data[班组长], data[年龄]):
        # 修改工作表名称
        ws.title = str(a)
        # 在对应单元格填充相应数据
        ws[B2].value = str(a)
        ws[F2].value = str(b)
        ws.cell(row=4, column=5).value = str(c)
        ws.cell(row=4, column=2).value = str(d)
        ws.cell(row=5, column=2).value = str(e)
        ws[B3].value = str(f)
        ws.cell(row=6, column=2).value = str(g)
        # 填充的时间格式有:00:00:00,不需要,所以去除
        ws.cell(row=6, column=5).value = str(h).replace("00:00:00", "")
        ws.cell(row=7, column=2).value = str(h).replace("00:00:00", "")
        ws[D3].value = str(i)
        ws[D2].value = str(j)

        # 以电影名称为名字,保存为单个工作簿
        wb.save(file_path + "/{}.xlsx".format(a))
        print(a + "的表格已生成"

if __name__ == __main__:
    main()

总结

以上便是关于该问题的解决代码,借鉴了某个博主对于openpyxl库的使用,具体哪篇我忘记了,在此多谢啦。 新手小白,刚上路,有许多知识不清楚,还望大家多多指点一下我,谢谢啦。

经验分享 程序员 微信小程序 职场和发展