Как объединить несколько файлов XLSX в одну книгу, сохраняя при этом их рабочие листы отдельными?

#python #excel #xlsx

Вопрос:

Я пытаюсь объединить все файлы .xlsx в папке в одну книгу, разделив их рабочие листы. Мой приведенный ниже код захватывает указанные файлы, объединяет их в одну книгу, но копирует только первый лист из каждого файла вместо всех их листов.

Мой выходной файл в настоящее время представляет собой одну книгу, содержащую первый лист каждого объединенного файла, но в некоторых файлах есть несколько листов. Кто-нибудь знает, как я могу захватить все рабочие листы из нескольких файлов и объединить их в одну книгу?

Спасибо, что уделили мне время!

 import win32com.client as win32
import os

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

path = r'C:UsersDesktopmerge'
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()
 

Ответ №1:

Почему бы вам не попробовать прочитать файлы Excel с помощью панд python? Вы можете использовать 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)
 

Это может сделать свою работу!

Комментарии:

1. Спасибо, что помогли мне разобраться в этом. Ваш код объединил все книги в одну книгу с одним рабочим листом, я надеюсь объединить книги в одну книгу, сохраняя при этом отдельные вкладки рабочих листов.

2. @Nantourakis вы можете сделать это, просто заменив sheet_name=None на sheet_name=['a','b','c'...'nth'] .

3. установив sheet_name=Нет, по умолчанию будут выбраны все листы. Вы можете проверить это для вашего понимания. pandas.pydata.org/docs/reference/api/pandas.read_excel.html