Я пытаюсь очистить все данные на листе в 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 имеет некоторую документацию о перезаписи значений отдельных ячеек и строк, но не всего листа данных.
Спасибо за помощь!
Я считаю, что для того, чтобы обновить сводную таблицу (или что-то рассчитать), вам нужно открыть Excel и заставить его это сделать. Насколько я знаю, все эти библиотеки Excel только читают и пишут, они не вычисляют.
Спасибо, это то, что я в основном нашел, кроме использования VBA или win32com, что немного более громоздко. Знаете ли вы решение, позволяющее просто очистить лист и добавить в него новые данные? Могу ли я тогда просто вручную обновить сводные таблицы?
Openpyxl может указать Excel обновить сводку. Но проблема не в этом. Если вы хотите заменить данные на определенном листе, это легко сделать с помощью openpyxl.
@CharlieClark отлично, не могли бы вы рассказать мне, как очистить все данные на листе и заменить их данными из DataFrame pandas с помощью openpyxl? Спасибо!