Используя openpyxl, как перезаписать данные на определенном листе Excel, связанном со сводными таблицами

avatar
bkeesey
1 июля 2021 в 17:42
78
0
0

Я пытаюсь очистить все данные на листе в Excel и заменить их кадром данных pandas. Затем этот лист используется в сводной таблице на другом листе. Во-первых, как лучше всего заменить данные с помощью openpyxl из pandas DataFrame. Тогда можно ли обновить сводные таблицы до нового диапазона данных?

Я нашел несколько вопросов здесь и здесь, но следующее, похоже, не перезаписывает данные существующего листа в файле Excel.

df = pd.read_csv(PATH)

book = xls.load_workbook(PATH)
writer = pd.ExcelWriter(PATH, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df.to_excel(writer,sheet_name='SHEET_NAME',index=False,encoding='utf8')
writer.save()

openpyxl имеет некоторую документацию о перезаписи значений отдельных ячеек и строк, но не всего листа данных.

Спасибо за помощь!

Источник
dim_voly
1 июля 2021 в 17:46
1

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

bkeesey
1 июля 2021 в 19:02
1

Спасибо, это то, что я в основном нашел, кроме использования VBA или win32com, что немного более громоздко. Знаете ли вы решение, позволяющее просто очистить лист и добавить в него новые данные? Могу ли я тогда просто вручную обновить сводные таблицы?

Charlie Clark
2 июля 2021 в 09:29
0

Openpyxl может указать Excel обновить сводку. Но проблема не в этом. Если вы хотите заменить данные на определенном листе, это легко сделать с помощью openpyxl.

bkeesey
2 июля 2021 в 13:34
0

@CharlieClark отлично, не могли бы вы рассказать мне, как очистить все данные на листе и заменить их данными из DataFrame pandas с помощью openpyxl? Спасибо!

Ответы (0)