У меня есть этот файл Excel с несколькими листами. Один лист содержит две сводные таблицы, обычную таблицу, основанную на данных из сводки, некоторые диаграммы также основаны на сводке.
Я обновляю листы без сводок, используя приведенный ниже код. Содержимое этих листов создается в виде фреймов данных и сразу же во фрейме данных.
Метод 1
book = xl.load_workbook(fn)
writer = pd.ExcelWriter(fn,engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
DF.to_excel(writer, 'ABC', header=None, startrow=book.active.max_row)
writer.save()
Но, когда файл записывается, сводная точка таблица преобразуется в обычный текст. Решение, которое я нашел для сохранения сводной таблицы, состоит в том, чтобы читать и записывать рабочую книгу, используя следующие методы.
Метод 2
workbook = load_workbook(filename=updating_file)
sheet = workbook["Pivot"]
pivot = sheet._pivots[0]
# any will do as they share the same cache
pivot.cache.refreshOnLoad = True
workbook.save(filename=updating_file)
Это добавляет дополнительную строку к Сводная таблица как «Значение», которая разрушает значения таблиц на основе сводной таблицы.
Согласно здесь с использованием pd.ExcelWriter
не сохранит сводные таблицы. Единственный пример, который я нашел для обновления существующего файла Excel с фреймом данных, требует pandas ExcelWriter.
Некоторая помощь будет принята с благодарностью, так как я не могу найти метод для выполнения обоих требований
Единственный вариант, который я пока вижу, - записать части данных с помощью Pandas. Затем удалите существующий сводный лист и скопируйте лист из оригинала f ie. Но, опять же, я должен найти способ очистить таблицу на основе сводки и переписать с помощью openpyxl, используя второй метод. (Мы не можем копировать листы между рабочими книгами)