将excel表里相同工作簿的内容合并到一起
用到的第三方模块是pandas,readline模块是为了方便生成可执行程序后,在控制台复制粘贴。
import os
import pandas as pd
import readline
readline.parse_and_bind("control-v: paste")
path = input('请输入您要合并的文件所在的文件夹路径:')
print('合并中...')
def get_dir_name(path): #获取所要合并文件的绝对路径
dir_path = os.listdir(path)
for i in dir_path:
abs_path = os.path.join(path,i)
lst_dir.append(abs_path) #['C:\\Users\\Desktop\\新建文件夹\\1.xlsx', 'C:\\Users\\hx\\Desktop\\新建文件夹\\2.xlsx']
return abs_path
def get_sheet(abs_path): #读取工作簿
global sheet_names,sheet_num
excel_sheet = pd.ExcelFile(abs_path) #<pandas.io.excel._base.ExcelFile object at 0x012EDD10>
sheet_names = excel_sheet.sheet_names #[工作簿1,工作簿2,工作簿3]
sheet_num = len(sheet_names) #3
return sheet_names, sheet_num
def open_file(*args): #打开文件
for k in sheet_names: # 工作簿1
excel_read = pd.ExcelFile(j) # 读取文件
data = excel_read.parse(sheet_name=sheet_names[x]) #工作簿1
lst_data_frame[x].append(data)
if __name__ == '__main__':
lst_dir = []
get_sheet(get_dir_name(path))
lst_data_frame = [[] for i in range(sheet_num)] #[[],[],[]...]
x = 0
while x <= (len(lst_data_frame)-1):
for j in lst_dir:
open_file(j,x)
x += 1
writer = pd.ExcelWriter(r'%s\合并结果.xlsx' %path)
for l in range(x):
res = pd.concat(lst_data_frame[l], axis=0,ignore_index=True) #将列表转换为DataFrame
res.to_excel(writer, sheet_name='sheet%s'%l)
writer.save()