FastExcelWriter – Защита

Источник: 6.19.2 · 0608684

На этой странице

FastExcelWriter – Защита

В таблицах Excel есть три уровня защиты данных:

  • Книга — можно защитить книгу от изменения её структуры, запретив вставку, удаление и переименование листов
  • Лист — можно защитить лист от изменений, но при этом разрешить отдельные действия с ним, например выделение и сортировку ячеек, изменение формата или вставку строк и т.д.
  • Ячейка — если лист защищён, то по умолчанию все его ячейки защищены от изменений, но можно разрешить редактирование отдельных ячеек, а также запретить отображение формул ячеек на защищённом листе

Защиту книги или листа можно закрыть паролем. Если пароль задан, пользователь сможет снять защиту книги или листа только зная этот пароль.

Обратите внимание: пароль не шифрует файл, и файл может быть прочитан любой программой. Пароль лишь блокирует снятие защиты через интерфейс MS Excel. При этом некоторые совместимые программы могут игнорировать пароль

Защита книги

php
$excel = Excel::create();

// Защищаем книгу
$excel->protect();

// Закрываем защиту паролем
$excel->protect('PasswordForWorkbook');

// Снимаем защиту книги
$excel->unprotect();

Защита листа

php
$excel = Excel::create();

// Получаем первый лист и защищаем его без пароля
$sheet1 = $excel->sheet();
$sheet1->protect();

// Закрываем защиту листа паролем
$sheet2 = $excel->sheet('Sheet2');
$sheet2->protect('PasswordIsHere');

// Разрешаем вставку строк
$sheet2->allowInsertRows();

Методы, разрешающие отдельные действия на защищённом листе

Функция Описание
allowAutoFilter() Разрешает работу автофильтров на защищённом листе
allowDeleteColumns() Разрешает удаление колонок на защищённом листе
allowDeleteRows() Разрешает удаление строк на защищённом листе
allowFormatCells() Разрешает форматирование ячеек на защищённом листе
allowFormatColumns() Разрешает форматирование колонок на защищённом листе
allowFormatRows() Разрешает форматирование строк на защищённом листе
allowInsertColumns() Разрешает вставку колонок на защищённом листе
allowInsertHyperlinks() Разрешает вставку гиперссылок на защищённом листе
allowInsertRows() Разрешает вставку строк на защищённом листе
allowEditObjects() Разрешает редактирование объектов на защищённом листе
allowPivotTables() Разрешает работу сводных таблиц на защищённом листе
allowEditScenarios() Разрешает редактирование сценариев на защищённом листе
allowSelectLockedCells() Разрешает выделение заблокированных ячеек на защищённом листе
allowSelectUnlockedCells() Разрешает выделение разблокированных ячеек на защищённом листе
allowSelectCells() Разрешает выделение любых ячеек на защищённом листе
allowSort() Разрешает сортировку на защищённом листе

Если лист не защищён, эти методы игнорируются

Блокировка и разблокировка ячеек

На защищённом листе можно разблокировать отдельную ячейку

php
$sheet1->protect();

// Разблокируем ячейку на защищённом листе
$sheet1->writeCell('')->applyBorder('thin')->applyUnlock();

// Скрытая ячейка 
// Содержимое ячейки не будет отображаться в строке формул на защищённом листе
// Если ячейка содержит формулу, будет показан вычисленный результат, но не сама формула
$sheet1->writeCell('=SUM(A1:B3)')->applyHide();

Разблокировать можно и конкретную ячейку по адресу

php
$sheet1->protect();

// Разблокируем ячейку B4 на защищённом листе
$sheet1->cell('B4')->applyBorder('thin')->applyUnlock();

// Скрытая ячейка 
// Содержимое ячейки не будет отображаться в строке формул на защищённом листе
// Если ячейка содержит формулу, будет показан вычисленный результат, но не сама формула
$sheet1->writeCell('=SUM(A1:B3)')->applyHide();

Также можно разблокировать ячейки любой области

php
$sheet1->protect();

$area1 = $sheet1->makeArea('C3:F9')
    ->applyBorderOuter('thin')
    ->applyBgColor('#ccc');
    
// Разблокируем ячейки внутри области    
$area2 = $sheet1->makeArea('d4:e8')
    ->applyBorderOuter('thin')
    ->applyBgColor('none')
    ->applyUnlock();

$sheet1->clearAreas();

FastExcelWriter 6.19.2 · Поиск по текущей библиотеке и версии.

Загрузка поиска…

Не удалось загрузить поиск. Попробуйте ещё раз.

Ничего не найдено. Попробуйте другое слово или имя метода.