【问题标题】:How to merge multiple XLSX files into one Workbook while keeping their worksheets separate?如何将多个 XLSX 文件合并到一个工作簿中,同时保持它们的工作表分开?
【发布时间】:2021-07-13 06:38:24
【问题描述】:

我正在尝试将文件夹中的所有 .xlsx 文件合并到一个工作簿中,同时保持它们的工作表分开。我下面的代码是抓取指定的文件,将它们合并到一个工作簿中,但只复制每个文件中的第一个工作表,而不是所有工作表。

我的输出文件目前是一个工作簿,其中包含每个合并文件的第一个工作表,但有些文件有多个工作表。有谁知道我如何从多个文件中获取所有工作表并将它们合并到一个工作簿中?

感谢您的宝贵时间!

import win32com.client as win32
import os

excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Add()

path = r'C:\Users\Desktop\merge'
files = os.listdir(path)

for f in [os.path.join(os.getcwd(), "Daily Pipeline"), os.path.join(os.getcwd(), "Loans")]: 
    w = excel.Workbooks.Open(f) 
    w.Sheets(1).Copy(wb.Sheets(1))


wb.SaveAs(os.path.join(os.getcwd(), "Final.xlsx"))
excel.Application.Quit()

【问题讨论】:

    标签: python excel xlsx


    【解决方案1】:

    您为什么不尝试使用 python pandas 读取 excel 文件?您可以使用 glob 从您的目录中读取文件,然后将它们合并到一个数据框中。

    import glob
    
    all_data = pd.DataFrame()
    path = 'd:/projects/chassis/data/*.xlsx'
    for f in glob.glob(path):
        df = pd.read_excel(f, sheet_name=None, ignore_index=True, skiprows=6, usecols=8)
        cdf = pd.concat(df.values())
        all_data = all_data.append(cdf,ignore_index=True)
    print(all_data)
    

    这可能会起作用!

    【讨论】:

    • 感谢您帮助我调查此事。您的代码将所有工作簿与一张工作表组合成一个工作簿,我希望将这些工作簿组合成一个工作簿,同时保持它们的工作表选项卡分开。
    • @Nantourakis 您只需将sheet_name=None 替换为sheet_name=['a','b','c'...'nth'] 即可。
    • 通过设置 sheet_name=None,默认选择所有工作表。您可以检查一下以了解情况。 pandas.pydata.org/docs/reference/api/pandas.read_excel.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    相关资源
    最近更新 更多