Импорт и запись нескольких листов Excel с помощью Panda

#python #excel #pandas

#python #excel #pandas

Вопрос:

Я пытаюсь импортировать файлы Excel, которые имеют несколько листов. В настоящее время мой код (ниже) импортирует только первый лист. Оставшаяся часть кода представляет собой предварительные вычисления только с одного листа (в настоящее время это первый, поскольку я переместил его туда, чтобы заставить его работать, но бонус, если я смогу избежать этого шага).

В идеале я хотел бы импортировать все листы, предварительно выполнить вычисления на одном листе и снова экспортировать все листы в файл Excel. Большинство листов будут импортироваться / экспортироваться без изменений, в то время как на одном листе с определенным / согласованным именем будут предварительно сформированы вычисления, а также экспортированы. Не уверен, на какие функции обратить внимание. Спасибо!

 df = pd.read_excel("excelfilename.xlsx")
df.head() 

#other code present here preforming calculations

df.to_excel(r'newfilename.xlsx', index = False)
 

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

1. Используйте sheet_name=None для всех листов. pandas.pydata.org/pandas-docs/stable/reference/api /…

Ответ №1:

Загрузите файл Excel с помощью pandas , затем получите имена листов с помощью xlrd , а затем сохраните измененные данные обратно.

 import xlrd
file_name = "using_excel.xlsx"
sheet_names_ = xlrd.open_workbook(file_name, on_demand=True).sheet_names()
for sheet_name in  sheet_names_:
    df_sheet = pd.read_excel(file_name, sheet_name=sheet_name)
    # do something
    if you_want_to_write_back_to_same_sheet_in_same_file:
        writer = pd.ExcelWriter(file_name)
        df_sheet.to_excel(writer, sheet_name=sheet_name)
        writer.save()

 

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

1. Спасибо за это! Я считаю, что сейчас импортируются все, потому что вычисления выполняются независимо от того, где в файле находится интересующий лист. Однако обратно записывается только этот лист, а других там больше нет. Есть предложения?

2. итак, вам нужно удалить несколько листов? если это так, напишите новый файл только с нужными листами и удалите старый файл.