在设置密码保护工作表时,可以使用以下代码来解决自动筛选无法使用的问题:
Sheet sheet = workbook.createSheet("Sheet1");
sheet.setAutoFilter(CellRangeAddress.valueOf("A1:C10"));//设置自动筛选
sheet.protectSheet("password");//设置密码保护
sheet.enableLocking(); //开启锁定
//禁用部分锁定
sheet.lockRows(0, sheet.getLastRowNum())
.lockCells(CellRangeAddress.valueOf("D1:D10"));
其中,sheet.enableLocking()
开启锁定,代表除了被禁用的部分外,其他单元格和行均不能编辑;sheet.lockRows(0, sheet.getLastRowNum())
锁定所有行;sheet.lockCells(CellRangeAddress.valueOf("D1:D10"))
锁定指定区域;sheet.setAutoFilter(CellRangeAddress.valueOf("A1:C10"))
设置自动筛选。这样设置后,在使用Excel O365时,新增的自动筛选就能正常使用了。