在锚点链接上下载XLSX文件,单击Laravel 5.2

时间:2016-02-12 11:19:30

标签: php laravel laravel-5.2 laravel-excel

我正在尝试使用Laravel Excel导出数据。我已经集成了Laravel excel,但在下载按钮点击时发现了一个问题,没有自动下载。

以下是我的观点:

procedure Button1Click(Sender: TObject);
var 
random_word:int;
begin
random_word:= Random (4);
    case random_word of
      0: Label1.Text := a;
      1: Label1.Text := b;
      2: Label1.Text := c;
      3: Label1.Text := d;
    end;
end;

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

<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

我不想将文件存储到任何本地存储。我只想在我点击链接而不是自动下载时才下载文件。有时我的数据会根据数据库中的表名继续更改。

我能以任何方式实现这一目标吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

根据Laravel Excel的documentation

  

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

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

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

  

要将创建的文件存储在服务器上,请使用 - &gt; store($ ext,$ path = false,$ returnInfo = false)或 - &gt; 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'));