1、梳理流程思路
- 首先导入需要调用的模块
- 其次,打开工作簿,获取工作簿的sheet页名字
- 读取不同sheet页,做不同的处理
- 将处理完成的结果,保存下来
2、具体代码实现
import pandas as pd
import xlrd
from openpyxl import load_workbook
file_path=r"E:\\work\\shuju\\源表\\2021年淘客订单汇总表.xlsx"
wb = xlrd.open_workbook(file_path) #打开工作簿
sheets = wb.sheet_names() # 获取工作簿的sheet页名字
print(sheets) # 打印sheet页名字
可以看出,已经打印出了这个Excel中包含的所有sheet页名字。
接下来使用for来对Excel表进行遍历循环,首先看一下循环打印结果:
# 目的将部分Excel中的数据进行处理
pass_list = ['总表','记-0082','记-0169', '记-0170', '记-0171'] # 将
# 将所有的表进行循环遍历
for i in sheets:
if i not in pass_list:
print(i)
else:
print(i,"not in list")
print("循环结束")
结果显示:
目的:将指定sheet页的指定列进行拼接
# 目的将部分Excel中的数据进行拼接
pass_list = ['总表','记-0082','记-0169', '记-0170', '记-0171'] # 将
# 将所有的表进行循环遍历
all_data =pd.DataFrame() #首先构建一个空的DataFrame对象,用于存放数据
for i in sheets:
if i not in pass_list:
data = pd.read_excel(file_path ,sheet_name =i)
# print(list(data)) #打印data的列名
if '订单付款时间 ' in list(data):
data=data.rename(columns={'订单付款时间 ': '订单付款时间'}) #由于数据不规范,对数据列名进行规范
Data = data[['订单付款时间','买家会员名']]
print(Data.head())
Data['订单付款时间'] = Data['订单付款时间'].astype(str) #将该字段转为字符串类型
Data['Sheet_name'] = i
all_data = all_data.append(Data)
print("=========")
print("循环结束")
结果输出:
out_path =r"E:\\work\\shuju\\源表\\hebing.xlsx" #构建输出表
writer = pd.ExcelWriter(out_path)
all_data .to_excel(writer,sheet_name ='Sheet1',index =False)
writer.save() #保存结果
writer.close()
整个小项目完成~~~~~~~~~~~~~~~~~
学会之后,真的减轻了工作量,大大提高了效率