web-dev-qa-db-ja.com

LaravelでExcelにExcelをエクスポートするときに列ヘッダーをどのように含めることができますか?

私はユーザーがExcelをダウンロードしようとしています、使用して Laravel Excel 製品情報を含むファイル。現在のWebルートは次のようになります。

Route::get('/Excel/release', 'ExcelController@create')->name('Create Excel');

私の現在のエクスポートは次のようになります。

class ProductExport implements FromQuery
{
    use Exportable;

    public function __construct(int $id)
    {
        $this->id = $id;
    }

    public function query()
    {
        return ProductList::query()->where('id', $this->id);
    }
}

私の現在のコントローラは次のようになります。

public function create(Request $request) {

    # Only alowed tables
    $alias = [
        'product_list' => ProductExport::class
    ];

    # Ensure request has properties
    if(!$request->has('alias') || !$request->has('id'))
        return Redirect::back()->withErrors(['Please fill in the required fields.'])->withInput();

    # Ensure they can use this
    if(!in_array($request->alias, array_keys($alias)))
        return Redirect::back()->withErrors(['Alias ' . $request->alias . ' is not supported'])->withInput();

    # Download
    return (new ProductExport((int) $request->id))->download('iezon_solutions_' . $request->alias . '_' . $request->id . '.xlsx');
}

https://example.com/Excel/release?alias=product_list&id=1に先頭にすると、これは正しく実行され、Excelファイルを返します。ただし、行の列ヘッダーはありません。データは次のように出てきます。

1   150 1   3       2019-01-16 16:37:25 2019-01-16 16:37:25     10

ただし、これにはID、コストなどのような列ヘッダーを含める必要があります。この出力に列ヘッダーを含めることができますか?

8
Jaquarh

このコードは私のために機能します

use App\Newsletter;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class NewsletterExport implements FromCollection, WithHeadings
{
    public function headings(): array
    {
        return [
            'Subscriber Id',
            'Name',
            'Email',
            'Created_at',
        ];
    }

    public function collection()
    {
        return Newsletter::where('isSubscribed', true)->get(['id','name','email','created_at']);
    }
}
 _
0
<?php

namespace App\Exports;

use App\Models\UserDetails;
use Maatwebsite\Excel\Concerns\FromCollection;

use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;

class CustomerExport implements FromCollection, WithHeadings
{
   
    public function collection()
    {
        return UserDetails::whereNull('business_name')
        ->select('first_name','last_name','mobile_number','dob','gender')
        ->get();
    }

   
    public function headings() :array
    {
        return ["First Name", "Last Name", "Mobile","DOB", "Gender"];
    }
}
 _
0
hariom nagar