我需要在电子表格的标题行上应用保护,但同时我也想启用自动过滤器
我可以根据下面的代码执行这两个操作,但它也会禁用电子表格中为空的单元格。例如,在我附上的屏幕截图中,它不允许我编辑单元格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')
我的数据框如下所示:
了解如何使用XlsxWriter执行某些操作的一个很好的通用方法是首先弄清楚如何在Excel中执行此操作。
在Excel中,默认情况下所有单元格都具有locked
属性,因此如果您“保护”工作表,则将锁定所有单元格以进行编辑。要在Excel中解决此问题,您必须解锁任何您希望允许用户更改的单元格。
因此,在您的XlsxWriter示例中,您必须创建unlocked
格式(如docs中)并将其应用于允许用户编辑的单元格。