当一个Excel表包含多个Sheet时;
比如我接到的这个表有200个Sheet;
好在每个表的结构都一样;
除第一张表包含表头外,其余表格都不包含表头;
pd.set_option('display.max_columns', None)
意思是设置表格所有列显示完整;
sheets = pd.ExcelFile(path)
这里没有用 pd.read_excel去直接读取表;
因为我想获得所有表的名称列表;
sheet_names = sheets.sheet_names
这样就可以获取所有表格工作簿的名称列表了;
读取第一张表
df = pd.read_excel(io=path, sheet_name=sheet_names[0])
获取表头
df.columns.values
获取新表数据
df_ = pd.read_excel(io=path, sheet_name=dataname, names=df.columns.values)
参数 names=df.columns.values 意思是把表头设置为第一张表的表头
当然也可以忽略表头,直接追加数据;
追加数据
df = df.append(df_, ignore_index=False)
因为索引可能重叠,所以要忽略索引,索引加上参数 ignore_index=False
import pandas as pd
# pd.set_option('display.max_columns', None)
path = '微信支付交易明细证明(20190224-20200223)01.xlsx'
sheets = pd.ExcelFile(path)
sheet_names = sheets.sheet_names
print(len(sheet_names[1:]))
# print(len(sheet_names))
# 读取第一张表
df = pd.read_excel(io=path, sheet_name=sheet_names[0])
# print(df.head())
# print(df)
# 获取表头
print(df.columns.values)
def append_data(df):
'''
遍历除第一张表外的所有sheet,提取数据,添加入df的数据中
:param df: 传入df数据
:return: 返回添加后的df数据
'''
for dataname in sheet_names[1:]:
print(f'正在处理{dataname}')
df_ = pd.read_excel(io=path, sheet_name=dataname, names=df.columns.values)
df = df.append(df_, ignore_index=False)
return df
df = append_data(df)
print(df)
df.to_excel('result.xlsx', index=False)
网友评论