June 19, 2021

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