2011-10-13 84 views
4

我有一个从PHPExcel输出的字符串,并且所有内容都完美显示。使用PHPExcel对受保护的单元格进行排序

我保护了表如下:

$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

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

您正在寻找设置排序属性。在您呼叫保护单后请拨打它:

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

如问题中所述,setSort在这种情况下不起作用。 –

相关问题