Я изучаю Laravel Framework. Мне нравится знать, есть ли пакет или инструмент, который автоматически добавляет или вставляет пароль в файл Excel в приложении Laravel, чтобы зарегистрированный пользователь мог открыть файл с паролем, известным пользователю, только после его загрузки.
Как добавить пароль к файлу Excel в Laravel
comment
попробовать phpoffice / phpspreadsheet?
- person JoSSte   schedule 16.01.2020
comment
Пожалуйста нет. Завтра попробую.
- person Bless Joe   schedule 16.01.2020
Ответы (1)
Вы можете добавить пакет maatwebsite/excel
для Laravel, который является оболочкой вокруг _ 2_ пакет.
Вот документы о том, как установить безопасность для электронной таблицы на PhpSpreadsheet: https://phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#setting-security-on-a-spreadsheet
См. раздел расширения laravel-excel em > документацию, чтобы узнать, как вызывать методы PhpSpreadsheet для события или с помощью макроса.
Окончательный код будет примерно таким:
namespace App\Exports;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\BeforeExport;
class InvoicesExport implements WithEvents
{
/**
* @return array
*/
public function registerEvents(): array
{
return [
BeforeExport::class => function(BeforeExport $event) {
$event->writer->getDelegate()->getSecurity()->setLockWindows(true);
$event->writer->getDelegate()->getSecurity()->setLockStructure(true);
$event->writer->getDelegate()->getSecurity()->setWorkbookPassword("Your password");
];
}
}
person
Hafez Divandari
schedule
16.01.2020
Хорошо, большое спасибо. Постараюсь реализовать этот пакет завтра.
- person Bless Joe; 17.01.2020
В моем случае не работает. Файл не защищен, и я все еще могу открыть экспортированный файл и отредактировать все, что мне нравится.
- person Pengyou; 07.08.2020
В моем случае не сработало, но в приведенном выше решении я добавил событие AfterSheet, чтобы оно работало так: return [... AfterSheet :: class = ›function (AfterSheet $ event) {... $ event-› sheet- ›getProtection () - ›setSheet (true); }, BeforeExport :: class = ›function (BeforeExport $ event) {...}]
- person Simion; 04.02.2021