如何将密码添加到 Laravel 中的 Excel 文件

How to add password to Excel file in Laravel

我正在学习Laravel框架。我想知道是否有一个包或工具可以自动将密码添加或插入Laravel应用程序中的Excel文件,以便注册用户只有在下载后才能使用用户知道的密码打开文件。

您可以添加 maatwebsite/excel package for Laravel which is a wrapper around phpoffice/phpspreadsheet 包。

以下是有关如何在 PhpSpreadsheet 上设置电子表格安全性的文档: https://phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#setting-security-on-a-spreadsheet

请参阅 laravel-excel 文档的 extending section 以了解如何调用 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");
        ];
    }
}