Laravel:如何将 Excel 文件存储在给定的路径中?

Posted

技术标签:

【中文标题】Laravel:如何将 Excel 文件存储在给定的路径中?【英文标题】:Laravel: How to store Excel File in a given path? 【发布时间】:2020-11-18 23:33:48 【问题描述】:

我有一个功能,可以将我的刀片视图转换为 Excel 格式并下载它。现在我想将它保存在指定位置,即:public/uploads/release 这是我的控制器:

 public function export_release()

    return Excel::download(new ReleaseExportView(), 'release.xlsx');

此功能下载excel文件下载文件夹。我想保存在位置:public/uploads/release

这是我的路线:

Route::Get('outbounds/export_release' ,'outboundController@export_release')->name('outbounds.export_release');

【问题讨论】:

【参考方案1】:

您可以使用store 方法将文件存储在文件系统中。

来自docs:

导出可以轻松存储在 Laravel 支持的任何文件系统上。

默认磁盘

public function storeExcel() 

    // Store on default disk
    Excel::store(new InvoicesExport(2018), 'invoices.xlsx');

自定义磁盘

public function storeExcel() 

    // Store on a different disk (e.g. s3)
    Excel::store(new InvoicesExport(2018), 'invoices.xlsx', 's3');
    
    // Store on a different disk with a defined writer type. 
    Excel::store(new InvoicesExport(2018), 'invoices.xlsx', 's3', Excel::XLSX);

现在理想情况下,您应该将文件存储在 storage/app/public/uploads/release 中,并按照 here 的说明创建从 public/storage/storage/app/public 的符号链接。

但如果您真的想将其存储在public/uploads/release 中,您可以在config/filesystems.php 中创建新的自定义磁盘。比如:

'real_public' => [
    'driver' => 'local',
    'root' => public_path(),
    'url' => env('APP_URL'),
    'visibility' => 'public',
],

然后你可以使用自定义磁盘来存储文件:

public function export_release()

    Excel::store(new ReleaseExportView(), 'uploads/release/release.xlsx', 'real_public');

【讨论】:

错误未定义类常量'XLSX' 您导入了哪个 Excel 类?也许尝试不指定文件阅读器,我更新了我的答案。 只需要包含这个:\Maatwebsite\Excel\Excel::XLSX【参考方案2】:

您可以在config/filesystems.php中创建一个新的存储盘:

'excel_uploads' => [
    'driver' => 'local',
    'root'   => public_path() . '/uploads/release',
],

并像这样存储文件:

Storage::disk('excel_uploads')->put($path, $file_content)

【讨论】:

以上是关于Laravel:如何将 Excel 文件存储在给定的路径中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将给定的 Excel 文件转换为 Python 中的字典?

如何更改csv导出的列的格式-Laravel Excel

如何使用 laravel 5.7 和 vue JS 在 mysql 中导入 excel 文件

如何在 Laravel 项目中处理 Excel 文件 | 扣钉·实栗

如何将 laravel 日志文件数据存储到数据库中(5.5)[关闭]

如何在 Laravel 中导入具有各种模型(和子数据/模型)的单个 excel 文件/工作表?