рабочая книга.сохранить создает поврежденную электронную таблицу (галочки исчезают)

#python #excel #openpyxl

Вопрос:

У меня есть очень простая электронная таблица с галочками, которую я хочу изменить с помощью Python. Когда я использую workbook.save() , галочки по какой-то причине исчезают.

Это упрощенная версия сценария, который я использую, который все еще воспроизводит проблему.

 from openpyxl import load_workbook
    
workbook = load_workbook(filename='example.xlsx')
workbook.sheetnames
workbook.active = 0
sheet = workbook.active
sheet
sheet.title
workbook.save(filename="example.xlsx")
 

Это электронная таблица перед запуском сценария.

До

Это электронная таблица после запуска скрипта.

После

У меня есть openpyxl 3.0.7, и я не получаю никаких сообщений об ошибках. Когда я пытаюсь установить старую версию openpyxl, например pip 3.0.5, и открываю электронную таблицу, я получаю это сообщение.

Мы обнаружили проблему с example.xlsx, мы можем попытаться восстановить его содержимое.

Я не знаю, может ли эта информация помочь.

Если вы хотите открыть электронную таблицу здесь, у вас есть.

Ответ №1:

Вы должны использовать .xlsm файлы вместо .xlsx и вы должны писать:

 load_workbook(filename='example.xlsm', read_only=False, keep_vba=True)
 

вместо:

 load_workbook(filename='example.xlsm')