我需要锁定标题,以便没有人可以编辑这些列,但是我想使用xlsxwriter对其启用自动过滤

时间:2019-04-17 19:06:58

标签: python-3.x xlsxwriter

我需要在电子表格的标题行上应用保护,但同时我想启用自动过滤器。

我能够根据以下代码应用保护,但是它也会禁用自动过滤。

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('A:S', None, unlocked)

# Turn worksheet protection on.
worksheet.protect()
worksheet.set_row(0, None, locked)
worksheet.set_row(1, None, locked)

worksheet.autofilter('B2:I500')

我的标题如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

在Excel中,您可以设置工作表保护,但允许用户更改各个元素,例如自动筛选器。在XlsxWriter中,您可以使用options中的protect()参数(请参阅docs)来指定要保护的工作表元素。

例如:

import pandas as pd


df = pd.DataFrame({'Data1': [10, 20, 30, 20, 15, 30, 45],
                   'Data2': [11, 21, 31, 21, 15, 31, 45]})

writer = pd.ExcelWriter('pandas_filter.xlsx', engine='xlsxwriter', )

df.to_excel(writer, sheet_name='Sheet1', index=False)

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

worksheet.protect(options={'autofilter': True})
worksheet.autofilter('A1:B8')

writer.save()

输出:

enter image description here