2016-02-12 101 views
2

我想使用Laravel Excel导出数据。我已经集成了Laravel excel,但只在下载按钮时才发现问题,而不是自动下载。下载XSLX文件锚点链接点击Laravel 5.2

这是我的看法是如何的样子:

<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'); 
    } 
} 

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

我能做到这一点吗?

谢谢!

回答

1

根据documentation为Laravel Excel中:

下载所创建的文件,使用 - >导出($分机)或 - >下载($分机)。

你不需要,除非你想启动一个下载过程既不使用也不->export方法->download

首先你需要的是将其存储在服务器上:

要存储在服务器上,使用创建的文件 - >存储($分机,$ PATH =假,$ returnInfo = FALSE)或 - >保存()。

如果要返回存储信息,请将第三参数设置为 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')); 
+0

我想你是对的。我为此得到了另一个解决方案。我为此创建了一条路线。 – user3201500

+0

你不需要一条路线来实现这一点。尝试使用'