Как разрешить редактирование защищенных ячеек с помощью xlsxwriter - PullRequest
1 голос
/ 22 апреля 2019

Мне нужно применить защиту только к строкам заголовков моей электронной таблицы, но в то же время я также хочу включить автофильтр

Я могу сделать оба на основе приведенного ниже кода, но он также отключает ячейки в электронной таблице, которая является пустой. Например, на скриншоте, который я прикрепил, я не могу редактировать ячейку B9

df.to_excel(writer_template, sheet_name='inputs')

worksheet = writer_template.sheets['inputs']

unlocked = workbook.add_format({'locked': False})
locked   = workbook.add_format({'locked': True})

worksheet.set_column('B:G', None, unlocked)

# Turn worksheet protection on.
worksheet.protect(options={'autofilter': True})
worksheet.set_row(0, None, locked)
worksheet.set_row(1, None, locked)

worksheet.autofilter('A2:G500')

Мой фрейм данных выглядит следующим образом:

enter image description here

1 Ответ

1 голос
/ 22 апреля 2019

Хороший общий подход к выяснению того, как сделать что-то с помощью XlsxWriter, заключается в том, чтобы сначала выяснить, как вы будете это делать в Excel.

В Excel все ячейки имеют свойство locked по умолчанию, поэтому, еслиВы «защищаете» лист, тогда все ячейки будут заблокированы для редактирования.Чтобы обойти это в Excel, вам нужно будет разблокировать любые ячейки, которые вы хотите разрешить пользователю изменять.

Таким образом, в вашем примере XlsxWriter вам нужно будет создать формат unlocked (как в документах ) и применить его к ячейкам, которые пользователь может редактировать.

...