从Laravel中的表通过ID导出到Excel

时间:2019-07-18 15:52:37

标签: php laravel

我想按ID从表格导出到Excel

类似这样的东西:

use Maatwebsite\Excel\Facades\Excel;
use App\Exports\JobExport;

public function export($id)
{          
     $query=DB::table('applyeds')
     ->where('job_id',$id)
     ->get();
    return Excel::download( $query, 'job.xlsx');    
}

刀片:<a href="{{url('job/export',$job->id)}}" class="button big ripple-effect">Export to Excel</a>

路线:Route::get('job/export/{id}', 'JobsController@export');

  

给我清空Excel。

1 个答案:

答案 0 :(得分:0)

您尚未使用 JobExport 导出。您没有将数据传递到JobExport

首先使用命令进行导出:

php artisan make:export JobExport

您的JobExport必须具有类似以下的数据:

<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\Exportable;

class JobExport implements FromView,ShouldAutoSize
{

    use Exportable;

    private $errors  = [];

    public function __construct($error_list){
        $this->errors = $error_list;
    }

    public function view(): View
    {
        return view('exports.job_export_sheet', [
            'errors' => $this->errors,
        ]);
    }
}

您可以使用以下代码将数据发送到导出:

return Excel::download(new (new JobExport($query)), 'users.xlsx');

之后,在资源/视图/出口/ job_export_sheet中查看

job_export_sheet.blade.php

中添加以下代码
<table>
<thead>
<tr>
    <th>Row No.</th>
    <th>Sheet Name</th>
    <th>Row Name</th>
    <th>List Of Errors</th>
</tr>
</thead>
<tbody>
@foreach($errors as $key=>$error)
    <tr>
        <td>{{ $error[0]}}</td>
        <td>{{ $error[1]}}</td>
        <td>{{ $error[2]}}</td>
        <td>{{ $error[3]}}</td>
    </tr>
@endforeach
</tbody>

名为 users.xlsx 的excelsheet将被下载。您发送 $ query 的方式不正确