简体   繁体   中英

Lock some cells from editing in python openpyxl

I'm using openpyxl to work with Microsoft Excel files (.xlsx/.xlsm), however I am struggling to lock cells (ie. prevent editing). My current code is this:

lock = Protection(locked=True,
                    hidden=False)
ws['A1'].protection = lock  # ws is my worksheet

However, I am still able to edit cell A1 . How can I fix it?

Edit:

This link (to a openpyxl email chain) recommends locking the entire sheet and then to unlock all of the cells but for A1 . However, this does not look like a reliable solution as I'll be dumping large amounts of data.

Lock the entire sheet:

    ws.protection.sheet = True

Then unlock the cells that can be edited

     cell.protection = Protection(locked=False)

You also need to set protection for the whole worksheet. The specification says this about protection for individual cells:

A boolean value indicating if the cell is locked. When cells are marked as "locked" and the sheet is protected, then the options specified in the Sheet Part's sheetProtection element (§18.3.1.85) are prohibited for these cells.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM