python操作Excel,读取表格内容,并根据需求将内容填充到表格指定位置
在日常工作中经常会遇到需要将“表一,部门信息表”内容逐行填充到“表二,个人基本信息表”的情况。
表一:
表二:
实现方式如下:
#!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可以灵活设置的方式写入数据,这种方式对传统的中国式报表设置很友好。