同目录下若干个excel表格,每个表格内若干个sheet表,每个sheet字段内容都不一样,合并到一个新的excel表内多个sheet中,比如表1三个sheet,表2四个sheet,表3七个sheet,合并完成后为一个表14个sheet。
import os
import xlrd
import openpyxl
def get_excle():
dir_list = os.listdir()
if 'excel' not in dir_list:
os.mkdir('excel')
os.chdir('excel')
Excels = os.listdir()
return Excels
# 获取单张表的数据
def get_data(filename):
d_list = []
file = xlrd.open_workbook(filename)
sheet_names = file.sheet_names()
for i in range(len(sheet_names)):
sheet = file.sheet_by_name(sheet_names[i])
nrows = sheet.nrows
ncols = sheet.ncols
for row in range(nrows):
new_list = []
for col in range(ncols):
new_list.append(sheet.cell(row, col).value)
d_list.append(new_list)
return d_list
# 获取文件夹下所有Excel的数据
def sum_data():
sum_list = []
os.chdir('excel')
excels = get_excle()
for i in range(len(excels)):
if '.xls' not in excels[i] or '.xlsx' not in excels[i]:
continue
data = get_data(excels[i])
for j in range(len(data)):
sum_list.append(data[j])
os.chdir('..')
return sum_list
# 将数据写入新表格
def create_excel(data):
dir_list = os.listdir()
if "result" not in dir_list:
os.mkdir('result')
os.chdir('result')
file = openpyxl.Workbook()
sheet = file['Sheet']
for i in range(len(data)):
for j in range(len(data[i])):
sheet.cell(row=i + 1, column=j + 1, value=data[i][j])
file.save('new.xlsx')
os.chdir('..')
if __name__ == '__main__':
os.chdir('..')
data_list = sum_data()
create_excel(data_list)
第一次运行会生成excle和result两个文件夹,然后把你想要统计的Excel表格放到excel文件夹下面,在重新运行一遍重新,就会在result文件夹下产生一个new.xlsx的表格就是你要的表格了,码代码不容易,有用的话点一下采纳
用xlwings很简单,
lis = ['./xxx.xlsx', './xxx.xlsx'] # 文件路径
with pd.ExcelWriter('./最终表.xlsx', mode='a', engine='openpyxl') as w:
for path in lis:
df = pd.read_excel(path)
path_name = path.split('/')[-1] # 文件名
df.to_excel(w, sheet_name=path_name, index=False)
如果有用望采纳