openpyxl: Ошибка значения: Значение должно быть одним из {«выбор», «данные», «поле»}

#python #python-3.x #excel #vba #openpyxl

Вопрос:

Существует файл xlsm, который мне нужно открыть, отредактировать и извлечь данные в соответствии с макросами, включенными на листе.

Но я не могу открыть сам файл. Я пытался:

 wb = openpyxl.load_workbook("workbook.xlsm",read_only=False,keep_vba=True)
 

Произошла Ошибка:

 Traceback (most recent call last):
  File "C:/Users/Downloads/Projects/Project1/Trial4.py", line 7, in <module>
    wb = openpyxl.load_workbook("workbook.xlsm",read_only=False,keep_vba=True)
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxlreaderexcel.py", line 317, in load_workbook
    reader.read()
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxlreaderexcel.py", line 282, in read
    self.read_worksheets()
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxlreaderexcel.py", line 268, in read_worksheets
    pivot = TableDefinition.from_tree(tree)
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxldescriptorsserialisable.py", line 83, in from_tree
    obj = desc.from_tree(el)
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxldescriptorssequence.py", line 85, in from_tree
    return [self.expected_type.from_tree(el) for el in node]
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxldescriptorssequence.py", line 85, in <listcomp>
    return [self.expected_type.from_tree(el) for el in node]
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxldescriptorsserialisable.py", line 103, in from_tree
    return cls(**attrib)
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxlpivottable.py", line 481, in __init__
    self.scope = scope
  File "C:UsersAppDataLocalPackagesPythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0LocalCachelocal-packagesPython37site-packagesopenpyxldescriptorsbase.py", line 128, in __set__
    raise ValueError(self.__doc__)
ValueError: Value must be one of {'selection', 'data', 'field'}
 

Может ли кто-нибудь предложить решение этой проблемы. ТИА

Комментарии:

1. openpyxl сообщает вам, что с файлом возникла проблема.

2. Но это очень широко используемый файл. Я не могу вносить какие — либо изменения в файл. Я попытался открыть файл с помощью Pandas, он также открывается и редактируется, но не смог сохранить файл в формате xlsm со всеми включенными макросами.

Ответ №1:

У меня была та же проблема, что и с поиском решения в Интернете, поэтому я разобрал openpyxl и, наконец, нашел.

похоже, что для управления «Условным форматом» не хватает фрагмента кода, поэтому я удалил все это из исходного excel.

и это, похоже, решило проблему.

Комментарии:

1. У меня была та же ошибка с условным форматом на листе, который даже не был затронут openpyxl. Итак, теперь вы просто обходитесь без форматирования?