使用PHPExcel对受保护的单元格进行排序

时间:2011-10-13 04:50:53

标签: php sorting phpexcel protection

我有一个从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不允许我对单元格进行保护时对数据进行排序。

问题:

我有什么方法可以允许这个吗?

  • 如果我取消整张桌子的保护,它会让我排序(我甚至必须这样做 取消保护标题行以使其工作)。
  • 我看过getProtection的setSort组件,但是 在这种情况下,无论是真还是假。
  • 如果不可能,那就没关系,我将不得不找到一个 替代..我只想知道答案。

1 个答案:

答案 0 :(得分:1)

老问题,但很可能有人想知道现在的答案。

您正在寻找set sort属性。在为工作表调用保护后调用它:

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);