Чтение и запись настраиваемых свойств листа Excel с python без зависимости Windows (xlrd, openpyxl et c.)? - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь сделать эквивалент этого в 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'

...