Как я могу определить, что лист Excel защищен (заблокирован) openpyxl в python? - PullRequest
0 голосов
/ 31 октября 2019

У меня есть книга Excel, которая содержит несколько листов. Некоторые листы защищены. В openpyxl я хочу проверить, какие листы защищены, а какие нет. Кто-нибудь знает, как это сделать с openpyxl?

Чтобы проиллюстрировать это, я создал тестовую книгу с тремя листами и защитил одну из них без, а другую с паролем. При доступе к рабочим листам с помощью openpyxl я не вижу разницы и не могу определить, защищен ли лист или нет. Я не имел значения, защищал ли я листы паролем или нет.

wb=xls.open('protection_test.xlsx')

u=wb['unprotected']

p=wb['protected']

ppw=wb['protected_with_password']

print(u.protection)

> <openpyxl.worksheet.protection.SheetProtection object>
> Parameters:
> selectLockedCells=False, selectUnlockedCells=False, algorithmName=None, sheet=False, objects=False, insertRows=True, insertHyperlinks=True, autoFilter=True, scenarios=False, formatColumns=True, deleteColumns=True, insertColumns=True, pivotTables=True, deleteRows=True, formatCells=True, saltValue=None, formatRows=True, sort=True, spinCount=None, password=None, hashValue=None

print(p.protection)

> <openpyxl.worksheet.protection.SheetProtection object>
> Parameters:
> selectLockedCells=False, selectUnlockedCells=False, algorithmName=None, sheet=False, objects=False, insertRows=True, insertHyperlinks=True, autoFilter=True, scenarios=False, formatColumns=True, deleteColumns=True, insertColumns=True, pivotTables=True, deleteRows=True, formatCells=True, saltValue=None, formatRows=True, sort=True, spinCount=None, password=None, hashValue=None

print(ppw.protection)

> <openpyxl.worksheet.protection.SheetProtection object>
> Parameters:
> selectLockedCells=False, selectUnlockedCells=False, algorithmName=None, sheet=False, objects=False, insertRows=True, insertHyperlinks=True, autoFilter=True, scenarios=False, formatColumns=True, deleteColumns=True, insertColumns=True, pivotTables=True, deleteRows=True, formatCells=True, saltValue=None, formatRows=True, sort=True, spinCount=None, password=None, hashValue=None


p.protection==u.protection

> True

ppw.protection==u.protection

> True

Я использую Python Python 3.7.3 и openpyxl 3.0.0

...