Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHPExcel对受保护的单元格进行排序_Php_Sorting_Phpexcel_Protection - Fatal编程技术网

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

使用PHPExcel对受保护的单元格进行排序,php,sorting,phpexcel,protection,Php,Sorting,Phpexcel,Protection,我有一个从PHPExcel输出的spreadsheet,所有东西都显示得非常完美 $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); $objPHPExcel->getActiveSheet()->getProtection()->setSort(true); 我已按如下方式保护该表: $objPHPExcel->getActiveSheet()->getProtect

我有一个从PHPExcel输出的spreadsheet,所有东西都显示得非常完美

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
我已按如下方式保护该表:

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

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
这很好用

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
在工作表中,我有一个表格,其中一些列是可编辑的(表格位于单元格A28:H50中-单元格E29:H50将是可编辑的-即4列,除标题外的所有行)。 要取消对这些单元格的保护,我使用以下方法:

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->getStyle('E29:H50')->getProtection()->setLocked(PHPExcel\u Style\u Protection::Protection\u UNPROTECTED)

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
这是有效的

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
在这一点上,一切都是我所期望的

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
我还在桌上放了一个自动过滤器:

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->setAutoFilter('A28:H50')

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
这就是我的问题所在。过滤器可以工作,但排序不能。我尝试使用标准Excel排序,并通过单击筛选字段上的下拉箭头

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
Excel不允许我对数据进行排序,因为单元格受到保护

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

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
我有什么办法可以允许这样做吗

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
  • 如果我取消对整个表的保护,它将允许我进行排序(我甚至不得不这样做) 取消对标题行的保护以使其正常工作)
  • 我已经看过getProtection的setSort组件,但是 在这种情况下,正确或错误都不起作用
  • 如果不可能的话,那没关系,我得找一个 可供替代的我宁愿知道答案

    • 这是一个老问题,但现在可能有人想知道答案

      $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
      $objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
      
      您正在查找集合排序属性。调用工作表保护后再调用它:

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

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