Python操作同目录下多个excel表格

同目录下若干个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)

img

img

img

第一次运行会生成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)

如果有用望采纳