我需要在电子表格的标题行上应用保护,但同时我想启用自动过滤器。
我能够根据以下代码应用保护,但是它也会禁用自动过滤。
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')
我的标题如下:
答案 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()
输出: