我有一个从 PHPExcel 输出的电子表格,一切都完美显示。
我已经按如下方式保护了工作表:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
效果很好。
在工作表中,我有一个表格,其中一些列是可编辑的(表格位于单元格 A28:H50 中 - 单元格 E29:H50 将是可编辑的 - 即 4 列,除标题外的所有行)。 要取消保护这些单元格,我使用以下方法:
$objPHPExcel->getActiveSheet()->getStyle('E29:H50')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
这行得通。
至此,一切都如我所料。
我还在 table 上放了一个自动过滤器:
$objPHPExcel->getActiveSheet()->setAutoFilter('A28:H50');
现在,这是我遇到问题的地方。过滤器有效,但排序无效。我已尝试使用标准 Excel 排序,并通过单击筛选字段上的下拉箭头。
Excel 不允许我对数据进行排序,因为单元格受到保护。
问题:
有什么方法可以允许这样做吗?
- 如果我取消保护整个表,它会让我排序(我什至不得不 取消保护标题行以使其正常工作)。
- 我看过 getProtection 的 setSort 组件,但是 在这种情况下,真假都不起作用。
- 如果不可能,那也没关系,我得找一个 替代方案.. 我只想知道答案。
最佳答案
老问题,但现在可能有人想知道答案。
您正在查找设置的排序属性。在为工作表调用保护后调用它:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
关于php - 使用 PHPExcel 对 protected 单元格进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749584/