首页 > 解决方案 > 使用 Python 将多个 excel 文件合并为一个主文件

问题描述

我正在处理我的论文数据,其中有多个人进行相同数量的实验。所以人 x 有实验 1 到 7,依此类推。

我设法为每个人创建了 7 个单独的 excel 文件。但我需要的是 x 人的一个 Excel 文件,每个实验的结果有 7 张纸。

我搜索了很多,似乎找不到合适的解决方案,希望有人可以帮助我。

counter_scenario = 1

wb = load_workbook(f'ID01_S{counter_scenario}.xlsx')
wb.create_sheet(f'ID01_S{counter_scenario}')
wb.save('ID01_No crash.xlsx')

counter_scenario += 1

我现在得到的是一个覆盖前一张表的文件。所以最后我只有一张包含实验 7 数据的工作表。当我运行代码时,“主文件”不断更新,这(对我而言)表明数据已写入其中,它只是覆盖它。

标签: pythonexcel

解决方案


首先,我们将一个人的所有工作簿读入 pandas

df1 = pd.read_excel('person_1_exp1.xlsx')
df2 = pd.read_excel('person_1_exp2.xlsx')
df3 = pd.read_excel('person_1_exp3.xlsx')
# and so on

让我们创建一个新的 xlsx 文件,该文件将分别包含每个人的所有实验:“Person_1_results.xlsx”

writer = pd.ExcelWriter(
    save_path.format("Person_1_results.xlsx"),
    engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
df1.to_excel(
    writer,
    sheet_name='Experiment_1',
    startrow=0,
    startcol=0,
    index=False)
df2.to_excel(
    writer,
    sheet_name='Experiment_2',
    startrow=0,
    startcol=0,
    index=False)
df3.to_excel(
    writer,
    sheet_name='Experiment_3',
    startrow=0,
    startcol=0,
    index=False)
# and so on

# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet1 = writer.sheets['Experiment_1']
worksheet2 = writer.sheets['Experiment_2']
worksheet2 = writer.sheets['Experiment_3']
# and so on

如果您对文件有一致的命名,则可以修改此解决方案并添加循环以制作重复的部分


推荐阅读