Как обновить только один лист из файла Excel с помощью pandas

#excel #pandas

Вопрос:

у меня есть один файл 1.excel, содержащий sheet_1, shee_2 и sheet_3

и у меня есть еще один файл 2.excel, содержащий лист_2

и я хочу обновить заменить файл 2.excel sheet_2 на файл 1.excel sheet_2

и я пытаюсь с

 finaldest = '1.xlsx'
REPORT2WRITERFINAL = pd.ExcelWriter(finaldest)

path = '1.xlsx'
x0 = pd.ExcelFile(path, engine='openpyxl')

path2 = '2.xlsx'
x1 = pd.ExcelFile(path2, engine='openpyxl')

for sheet in x0.sheet_names:
    if sheet in x1.sheet_names:
        t0 = x1.parse(sheet, header=0)
        t0.to_excel(REPORT2WRITERFINAL, startrow=0, startcol=1, sheet_name=sheet, index=False)

REPORT2WRITERFINAL.save()

REPORT2WRITERFINAL.close()
 

Ответ №1:

Вы должны использовать ExcelWriter в режиме добавления со стратегией замены листа:

 with pd.ExcelWriter('1.xlsx', mode='a', if_sheet_exists='replace') as x0, 
     pd.ExcelFile('2.xlsx') as x1:

    for sheet in set(x0.book.sheetnames).intersection(x1.book.sheetnames):
        df = x1.parse(sheet, header=0)
        df.to_excel(x0, sheet, startrow=0, startcol=1, index=False)