Я создаю файлы xlsx с xlsxwriter и хочу защитить определенные ячейки (например, все ячейки в диапазоне B2: B20). В документации указано, что вы можете использовать метод worksheet.protect()
- это защита по умолчанию для всего листа по умолчанию, а затем вы можете использовать workbook.add_format({'locked': 0})
для разблокировки определенных ячеек. Но я хочу наоборот: я хочу блокировать только определенный диапазон ячеек и оставлять остальную часть рабочего листа незаблокированной. Как я могу это сделать?XlsxWriter: блокировка только определенных ячеек
5
A
ответ
5
Способ сделать это такой же, как в Excel: set an unlock format for the entire sheet.
В Excel и XlsxWriter это означает установку формата разблокировки для всех столбцов. Например:
import xlsxwriter
workbook = xlsxwriter.Workbook('protection.xlsx')
worksheet = workbook.add_worksheet()
# Create some cell formats with protection properties.
unlocked = workbook.add_format({'locked': False})
locked = workbook.add_format({'locked': True})
# Format the worksheet to unlock all cells.
worksheet.set_column('A:XDF', None, unlocked)
# Turn worksheet protection on.
worksheet.protect()
# Write a locked and an unlocked cell.
worksheet.write('B1', 'Cell A1 is locked. It cannot be edited.')
worksheet.write('B2', 'Cell A2 is unlocked. It can be edited.')
worksheet.write('B3', 'Cell A3 is unlocked. It can be edited.')
worksheet.write('A1', 'Hello', locked )
worksheet.write('A2', 'Hello', unlocked)
worksheet.write('A3', 'Hello' ) # Unlocked by default.
workbook.close()
Большое вам спасибо за этот код и за отличную lib в целом! Это очень помогает мне. И весенняя летняя осенняя зима он пел, не танцевал ли он: 3 – dabajabaza
+1 Потому что это также блокирует изображения в ячейках, что позволяет сортировать лист при сохранении порядка всех данных –