如何将多个 excel 工作簿合并为具有多个工作表的单个工作簿

How to combine multi excel workbook into single workbook with multiple worksheets

我有 3 个工作簿,单张 sheets.I 需要将所有工作簿合并为一个 3 张工作簿。

我尝试了以下代码:

from pandas import ExcelWriter

writer = ExcelWriter("Sample.xlsx")

for filename in glob.glob("*.xlsx"):
    df_excel = pd.read_excel(filename,engine='openpyxl')

    (_, f_name) = os.path.split(filename)
    (f_short_name, _) = os.path.splitext(f_name)

    df_excel.to_excel(writer, f_short_name, index=False)

writer.save()

我收到类似“文件不是 zip 文件”的错误

"Sample.xlsx" 是在与输入工作簿相同的目录中创建的,在您使用 glob.glob("*.xlsx") 查找所有文件之前。因此,您尝试阅读“Sample.xlsx”,这是您的作者。这不起作用。

确保只迭代真实的输入工作簿,例如像那样:

import pandas as pd
from pandas import ExcelWriter
import glob
import os

writer = ExcelWriter("Sample.xlsx")
input_workbooks = glob.glob("*.xlsx")
input_workbooks.remove("Sample.xlsx")

for filename in input_workbooks:
    df_excel = pd.read_excel(filename,engine='openpyxl')

    (_, f_name) = os.path.split(filename)
    (f_short_name, _) = os.path.splitext(f_name)

    df_excel.to_excel(writer, f_short_name, index=False)

writer.save()

最好将输出工作簿 ("Sample.xlsx") 保存到另一个目录以避免混淆。显然,当你这样做时,你不能再从列表中删除它,所以只需删除行:input_workbooks.remove("Sample.xlsx")