python操作Excel,读取表格内容,并根据需求将内容填充到表格指定位置

发布时间 2023-06-05 16:11:42作者: 半马

在日常工作中经常会遇到需要将“表一,部门信息表”内容逐行填充到“表二,个人基本信息表”的情况。

表一:

表二:

 

 

实现方式如下:

#!usr/bin/python
# -*- coding: utf-8 -*-

import pandas as pd
import openpyxl as op
from openpyxl import Workbook
from openpyxl import load_workbook

#读取数据源表
path = r'/Users/abel/Documents/files/事业部/部门信息表.xlsx'
result = pd.read_excel(path)   # 直接使用 read_excel() 方法读取
result_pd = pd.DataFrame(result.values)  # result为处理之后的数据,可以是pivot_table 处理后的数据,也可以是group by 之后的数据
result_pd = result_pd.reset_index()  # 转化index

#读取写入表
wb = Workbook()  # 创建工作簿
ws = wb.create_sheet('个人信息', 0)  # 创建工作表
wb = load_workbook('/Users/abel/Documents/files/事业部/成员信息/个人基本信息表.xlsx')
ws = wb['Sheet1']

#将源数据结果写入目标表
for line in result_pd.values:
    name = line[1]  # 获取第1列信息,姓名
    ws["B2"] = name  #将名字写入B2列
    idCard = line[8]  # 获取第8列信息,身份证号
    ws["F2"] = str(line[8])  #将身份证号写入F2列
    wb.save('/Users/abel/Documents/files/事业部/'+name+'个人基本信息表.xlsx')# 将定义好的数据写入指定表格位置
    print("新增完成:",name)

 

除了openpyxl外,Pandas也提供了一种方便的方法来读取和写入Excel文件。同时Pandas还是一个强大的Python数据分析工具,它提供了大量的数据结构和函数,可以用来处理各种数据。

方法如下:

#!usr/bin/python
# -*- coding: utf-8 -*-

import pandas as pd

path = r'/Users/abel/Downloads/工程汇总表.xlsx'
frame = pd.read_excel(path)   # 直接使用 read_excel() 方法读取
data = list()
for i in range(0,20):  # 将工程汇总表数据循环出来
    s = frame.values[i, 1]  # 将工程汇总表数据取出
    s2 = frame.values[i, 2]
    data.append([i, s, s2]) # 将取出的数据添加到data里

pd.DataFrame(data,columns=["序号","项目名","竣工日"]).to_excel(r"/Users/abel/Downloads/项目表.xlsx",index = False)  #将取出的数据添加到项目表中

 

在上面代码中使用了DataFrame方法将数据写入excel中,但是to_excel方法只能直接写入,这样写入的局限就是位置是固定的,不能指定位置。
而通过openpyxl可以灵活设置的方式写入数据,这种方式对传统的中国式报表设置很友好。