php - 使用 PHPExcel 对 protected 单元格进行排序

标签 php sorting phpexcel protection

我有一个从 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/

相关文章:

powershell - 如何在 Powershell 中对 CSV 中的 IP 地址列表进行排序

PHPExcel - colspan 主题名称

PHPExcel 不会导出为 CSV

php - 使用 PHPExcel 合并单元格值 - PHP

php - MySQL While 循环不每次都执行插入子句

php - 如何在 symfony2 编写自己的控制台命令中以正确的格式获取日期

php - ajax方法发布不起作用

php - 在 PHP 中,数组和数组在类型声明上的区别是什么?

java - 如何在不使用 Collections.sort 等排序方法的情况下根据姓氏对 LinkedList 进行排序

c# - 如何在 c#/.net 中对 List<T> 进行排序