Чтение и запись листов в 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.