Чтение и запись листов в Excel файлах на языке Python
Как не потерять информацию, разделенную на отдельные листы в файлах Excel? Для этого в Python существуют специальные приемы. Рассмотрим наиболее простой из них.
Так, для чтения можно использовать класс библиотеки Pandas - ExcelFile и его метод parse. При этом для получения доступа к списку листов можно обратиться к свойству класса - sheet_names. Давайте создадим демонстрационный файл и выведем список его листов:
Далее, имея список листов, можно прочитать их содержимое, вызвав метод parse:
for sheet in xl.sheet_names: print(sheet) df_sh = xl.parse(sheet) print(df_sh,'\n')
Теперь перейдем к вопросу записи. Сначала скопируем наши датафреймы, чтобы потом записать их в листы нового файла в обратном порядке:
df_l = [] for sheet in xl.sheet_names: df_l.append(xl.parse(sheet))
Запись реализуется с помощью класса Pandas - ExcelWriter:
with pd.ExcelWriter('data/new_file.xlsx') as writer: for i, sheet in enumerate(xl.sheet_names): df_l[len(df_l) - i - 1].to_excel(writer, sheet_name=sheet, index=False)
Как можно заметить, запись осуществляется в режиме менеджера контекста, который позаботиться об открытии и закрытии файла после работы со всеми листами. При этом сохранение каждого отдельного датафрейма осуществляется аналогично традиционному способу использования метода to_excel, но вместо имени файла задается дескриптор writer.