Laravel экспорт с Excel - PullRequest
       11

Laravel экспорт с Excel

0 голосов
/ 09 января 2020

Я пытаюсь экспортировать некоторые данные в формате Excel, используя laravel. Но в этом формате я хочу показать некоторые другие строки, которые я понятия не имею.

<?php
namespace App\Exports;
use App\SalesLog;
use App\SalesLogItem;
use RegistersEventListeners;

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

use App\Helpers\DateHelper;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Events\BeforeExport;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\FromCollection;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;


class SalesExport implements FromQuery, WithHeadings,ShouldAutoSize, WithEvents
{
    /**
    * @return \Illuminate\Support\Collection
    */
    use Exportable;


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

    public function headings(): array
    {
        return [
            '#No',
            'Item Description',
            'Unit Type',
            'Item Price',


        ];
    }




    public function query()
    {
        return SalesLog::query()->join('sales_log_items','sales_logs.id','sales_log_items.sales_log_id')
            ->where('sales_log_items.sales_log_id', $this->id)
            ->select('sales_log_items.product_id','sales_log_items.name','sales_log_items.unit_type','sales_log_items.price');
    }
 }



public function index($log_id)
{
    $flight_nr=SalesLog::find($log_id)->flight_number_one;
    $date=date('y-m-d');
    $excel_title='sales_log'.$date;

    $data=SalesLog::find($log_id);

    return (new SalesExport($log_id,$data->aircraft_name))->download($excel_title.'.xlsx');
}

В этом коде загружается документ Excel, но он показывает мне только те данные, которые я беру в запросе метода.

Я хочу показать какой-то верхний колонтитул в начале, а затем нижний колонтитул в конце, который может иметь общее количество. Может ли кто-нибудь помочь мне найти, какую функцию использовать? Я использую maatwebsite 3.1

Ответы [ 3 ]

0 голосов
/ 09 января 2020

Плагин Maatwebsite не работает правильно в некоторых обстоятельствах, и тогда я советую использовать «PHPSpreadSheet», вы можете сделать это: 1 - создать файл Excel в качестве шаблона 2 - прочитать файл Excel 3 - добавить свои данные в файл Excel 4 - сохранить и загрузить это

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('./reports/template.xlsx');
$worksheet = $spreadsheet->getSheet(0);
$worksheet->getCell('C6')->setValue($sum_variable);
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$file_name='result_excel';
$writer->save($file_name);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.$file_name.'"');
$writer->save("php://output");
0 голосов
/ 09 января 2020

Этот пост может помочь. Нажмите здесь

0 голосов
/ 09 января 2020

Используемый вами пакет Maatwebsite\Excel позволяет экспортировать из файла блэйд-вида. Таким образом, вы можете создать представление так, как вам нравится, сделать верхний колонтитул, нижний колонтитул, поместить html <table> внутри него и использовать его для экспорта. Документы здесь.

...