#python #excel #pivot-table #openpyxl
Вопрос:
У меня есть файл excel — один лист используется для записи данных с помощью python, другой лист содержит сводную таблицу. Я хочу, чтобы сводная таблица была точно такой же, как исходный файл.
Проблема в том, что после сохранения новой книги с помощью openpyxl я открываю файл excel и обновляю сводную таблицу, она теряет флажок «Настройки полей..» — > «Повторять метки элементов», и мне нужно каждый раз включать его вручную. Это не очень эффективно, я бы предпочел решить эту проблему с помощью python. Пример файла проверен, но флажок, похоже, исчезает после сохранения нового файла с помощью openpyxl.
from openpyxl import load_workbook
from pathlib import Path
from datetime import date
import os
sample_file_path = Path('sample_excel.xlsx') # source excel
result_folder_path = Path('results')
wb = load_workbook(sample_file_path)
ws = wb["t_mm"] # worksheet with pivot table I want to preserve as is
# some manipulations to other worksheet
xlsx_filename = "test_my_file_%s.xlsx" % date.today().strftime('%d%m%Y')
completename = os.path.join(result_folder_path, xlsx_filename)
wb.save(completename)
Я прочитал документацию https://openpyxl.readthedocs.io/en/stable/api/openpyxl.pivot.table.html, но не мог понять, как сохранить этот флажок. Я не эксперт по excel или сводным таблицам. Я думаю, что это тот параметр, который мне нужен «showMultipleLabel=True», но из документов я понимаю, что по умолчанию он «True», поэтому мой чекбокс должен оставаться нетронутым. Может быть, другой параметр?
Комментарии:
1. не по теме — по опыту я сталкивался со многими проблемами со сводными таблицами и Openpyxl. Наконец, я всегда храню все сводные таблицы в одной книге, а все данные в другой. python работает только с рабочей книгой данных, и сводные таблицы остаются нетронутыми.
2. @shoaib30 Спасибо за совет. Я также закончил тем, что разделил файл данных из сводного файла для этого проекта.