Я пытаюсь сделать эквивалент этого в python без зависимости Windows (т.е. с xlrd или openpyxl et c.): https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.customproperties (что легко с VBA, VB. NET, C#. NET, win32com et c.)
Я нашел несколько похожие вопросы, но без ответов: Прочтите свойства книги, используя python и xlrd & openpyxl - Как сохранить пользовательские свойства xlsx
OpenPyXl, похоже, имеет какой-то модуль, но нигде нет документации, которая объясняет, как его использовать et c .: https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.custom.html
(я использую v2.6.2, но он также присутствует там: https://openpyxl.readthedocs.io/en/2.6/api/openpyxl.worksheet.custom.html)
VB. NET пример:
Private Sub setCustomProp(prop_name As String, value As Object, ByRef sheet As Worksheet)
For Each customProp As CustomProperty In sheet.CustomProperties
If customProp.Name = prop_name Then
customProp.Delete()
Exit For
End If
Next
sheet.CustomProperties.Add(prop_name, value)
End Sub
'Call it like:
setCustomProp("propName", propVal, curr_ws)
То, что я пробовал с openPyXl (не работает):
import os
import openpyxl
path = os.path.abspath(f'./example.xlsx')
wb = openpyxl.load_workbook(path)
ws_curr = wb["sheet1"]
for prop in ws_curr.custom.CustomProperties:
print(prop)
Сообщение об ошибке: AttributeError: 'Worksheet' object has no attribute 'custom'