#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