Сортировка защищенных ячеек с помощью PHPExcel - PullRequest
4 голосов
/ 13 октября 2011

У меня есть таблица, выведенная из 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 не позволяет мне сортировать данные, поскольку ячейки защищены.

Вопрос:

Можно ли как-нибудь разрешить это?

  • Это позволит мне отсортировать, если я сниму защиту всей таблицы (у меня даже есть снимите защиту строки заголовка, чтобы он работал).
  • Я посмотрел на компонент setSort в getProtection, но в этой ситуации не работает ни истина, ни ложь.
  • Если это невозможно, это будет хорошо, я должен буду найти альтернатива .. Я просто хотел бы знать ответ.

1 Ответ

1 голос
/ 21 мая 2014

Старый вопрос, но, вероятно, кто-то захочет узнать ответ в настоящее время.

Вы ищете заданное свойство сортировки.Позвоните после того, как позвоните в службу защиты листа:

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...