2

我正在尝试使用 Laravel Excel 导出数据。我已经集成了 Laravel excel,但在仅下载按钮单击时发现问题,而不是自动下载。

这是我的视图的样子:

<a href="{{Export::exportXLSX('users', $users)}}" class="btn btn-default btn-sm">
                                    <i class="fa fa-file-excel-o"></i> Export Users </a> 

// here $users is the array return from tbl_users through UsersController

我有一个帮助方法来下载文件,这是我的助手的样子:

class Export
{
    public static function exportXLSX($filename, $data){
        $filename = $filename.'-'.Carbon::now();
        Excel::create($filename, function($excel) use($data) {
            $excel->sheet('Sheetname', function($sheet) use($data) {
                $sheet->fromArray($data);
            });
        })->export('xlsx');
    }
}

我不想将文件存储到任何本地存储。我只希望仅在单击链接而不是自动下载时才下载文件。有时我的数据会根据数据库中的表名不断变化。

我有什么办法可以做到这一点?

谢谢!

4

1 回答 1

1

根据Laravel Excel的文档:

要下载创建的文件,请使用 ->export($ext) 或 ->download($ext)。

除非您想开始下载过程,否则您不需要使用既不需要->export也不需要方法。->download

首先,您需要将其存储在服务器上:

要将创建的文件存储在服务器上,请使用 ->store($ext, $path = false, $returnInfo = false) 或 ->save()。

如果要返回存储信息,请将第三个参数设置为 true 或更改 export.php 中的配置设置。

这是一个例子:

class Export
{
    public static function exportXLSX($filename, $data){
        $filename = $filename.'-'.Carbon::now();
        $storage_info = Excel::create($filename, function($excel) use($data) {
            $excel->sheet('Sheetname', function($sheet) use($data) {
                $sheet->fromArray($data);
            });
        })->store('xls', false, true);

        // Work with $storage_info->full parameter
        // ...
    }
}

如果您想使用自定义存储路径(例如,将每个客户端的文件分开),您可以将文件夹设置为第二个参数。

->store('xls', storage_path('excel/exports'));
于 2016-02-12T12:08:47.110 回答