我需要锁定我的 headers 以便没有人可以编辑这些列,但我想使用 xlsxwriter 启用自动过滤器
I need to lock my headers so that no one can edit those columns but I want to enable autofilter on that using xlsxwriter
我需要对电子表格的 header 行应用保护,但同时我想启用自动过滤器。
我可以根据以下代码应用保护,但它也会禁用自动过滤器。
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')
我的 header 如下所示:
在 Excel 中,您可以设置工作表保护,但允许用户更改单个元素,例如自动过滤器。在 XlsxWriter 中,您可以使用 protect()
中的 options
参数指定您希望保护的工作表元素(请参阅 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()
输出:
我需要对电子表格的 header 行应用保护,但同时我想启用自动过滤器。
我可以根据以下代码应用保护,但它也会禁用自动过滤器。
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')
我的 header 如下所示:
在 Excel 中,您可以设置工作表保护,但允许用户更改单个元素,例如自动过滤器。在 XlsxWriter 中,您可以使用 protect()
中的 options
参数指定您希望保护的工作表元素(请参阅 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()
输出: