我有一个从PHPExcel输出的spreadheeet,一切都很完美。
我已按以下方式保护工作表:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
工作正常。
在表格中我有一个表格,其中一些列可以编辑(表格在单元格A28:H50中 - 单元格E29:H50将是可编辑的 - 即4列,除标题之外的所有行)。 为了取消保护这些单元格,我使用以下内容:
$objPHPExcel->getActiveSheet()->getStyle('E29:H50')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
这很有效。
此时,一切都如我所料。
我还在桌子上放了一个自动过滤器:
$objPHPExcel->getActiveSheet()->setAutoFilter('A28:H50');
现在,这是我遇到问题的地方。过滤器工作,但排序没有。我尝试使用标准的Excel排序,并点击我的过滤器字段上的下拉箭头。
Excel不允许我对单元格进行保护时对数据进行排序。
问题:
我有什么方法可以允许这个吗?
答案 0 :(得分:1)
老问题,但很可能有人想知道现在的答案。
您正在寻找set sort属性。在为工作表调用保护后调用它:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);