2 votes

Verrouiller certaines cellules pour l'édition en python openpyxl

Je suis en train d'utiliser openpyxl pour travailler avec des fichiers Microsoft Excel (.xlsx/.xlsm), cependant j'ai du mal à verrouiller les cellules (c'est-à-dire empêcher leur édition). Mon code actuel est le suivant :

lock = Protection(locked=True,
                    hidden=False)
ws['A1'].protection = lock  # ws est ma feuille de travail

Cependant, je suis toujours capable d'éditer la cellule A1. Comment puis-je corriger cela ?

Édition :

Ce lien (vers une chaîne d'e-mails sur openpyxl) recommande de verrouiller l'ensemble de la feuille puis de déverrouiller toutes les cellules sauf A1. Cependant, cela ne semble pas être une solution fiable car je vais importer de grandes quantités de données.

5voto

Siva Points 178

Verrouiller l'intégralité de la feuille :

    ws.protection.sheet = True

Ensuite, déverrouiller les cellules pouvant être modifiées

     cell.protection = Protection(locked=False)

3voto

Charlie Clark Points 322

Vous devez également définir une protection pour l'ensemble de la feuille de calcul. La spécification indique ceci à propos de la protection des cellules individuelles :

Une valeur booléenne indiquant si la cellule est verrouillée. Lorsque les cellules sont marquées comme "verrouillées" et que la feuille est protégée, alors les options spécifiées dans l'élément sheetProtection de la partie Feuille (§18.3.1.85) sont interdites pour ces cellules.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X