如何用xlsxwriter保护Excel工作表并启用可用的Autofilter?
解决方案
要解决工作表保护后Autofilter无法使用的问题,核心是在调用xlsxwriter的工作表保护方法时,明确开启Autofilter的使用权限——这对应你手动操作里的「Use Autofilter」勾选选项。
关键修改步骤
只需要修改代码中最后一行的protect调用,添加autofilter=True参数即可:
# 保护工作表并允许使用Autofilter worksheet.protect('enterPasswordHere', autofilter=True)
完整调整后的代码
整合你原有代码并完成修改后的版本如下:
# 加载CSV数据到DataFrame csv_dataframe = pd.read_csv(report_csv_file, sep = ',', encoding = "ISO-8859-1", engine = 'python', index_col = None, names = ['TIPO', 'CODIGO', 'DESCRICAO', 'FORNECEDOR', 'PRINCIPIO_ATIVO', 'ANVISA', 'FABRICANTE']) # 重置Pandas默认表头格式 pandas.io.formats.excel.header_style = None # 创建Excel写入对象 writer = pd.ExcelWriter(template_excel_file, engine = 'xlsxwriter') # 将DataFrame写入Excel工作表 excel_dataframe = csv_dataframe.to_excel(writer, sheet_name = 'Material Alto Custo', index = False, header = ['TIPO', 'CODIGO', 'DESCRICAO', 'FORNECEDOR', 'PRINCIPIO_ATIVO', 'ANVISA', 'FABRICANTE']) # 获取DataFrame维度 (max_row, max_col) = csv_dataframe.shape # 获取工作簿和工作表对象 workbook = writer.book worksheet = writer.sheets['Material Alto Custo'] # 定义表头格式 header_format = workbook.add_format({'bold' : True, 'font' : 'Arial', 'size' : 10, 'border' : 1}) # 定义常规列格式和特殊列格式 font_size_and_border = workbook.add_format({'font' : 'Arial', 'size' : 10, 'border' : 1, 'align' : 'left'}) column_left_zeroes_format_and_border = workbook.add_format({'num_format' : '00000000','font' : 'Arial', 'size' : 10, 'border' : 1, 'align' : 'left'}) # 应用列格式 worksheet.set_column(0,max_col - 1, 20.0, font_size_and_border) worksheet.set_column(1, 1, 20.0, column_left_zeroes_format_and_border) # 重写表头并应用格式 for col_num, value in enumerate(csv_dataframe.columns.values): worksheet.write(0, col_num, value, header_format) # 给表头添加Autofilter worksheet.autofilter(0, 0, 0, 6) # 保护工作表并允许使用Autofilter worksheet.protect('enterPasswordHere', autofilter=True) # 保存并关闭写入对象 writer.close()
补充说明
worksheet.protect()还支持其他权限参数,比如sort=True允许排序、select_locked_cells=True允许选中锁定单元格等,可根据需求自行添加。- 无需额外解锁表头单元格,只要开启
autofilter权限,筛选器就能正常交互,同时工作表其他区域保持保护状态。
内容的提问来源于stack exchange,提问作者Leonardo Leipnitz
相关产品推荐
相关产品推荐

