2011-10-13 129 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在這種情況下不起作用。 –

相關問題