【问题标题】:Laravel export with excelLaravel 用 excel 导出
【发布时间】:2020-01-09 14:07:12
【问题描述】:

我正在尝试使用 laravel 以 excel 格式导出一些数据。但在这种格式中,我想显示一些我不知道的其他行。

<?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

【问题讨论】:

    标签: laravel maatwebsite-excel


    【解决方案1】:

    您使用的Maatwebsite\Excel 包允许从刀片视图文件中导出。因此,您可以根据需要设计视图,制作页眉、页脚,在其中放入 html &lt;table&gt;,然后将其用于导出。 Docs here.

    【讨论】:

      【解决方案2】:

      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");
      

      【讨论】:

        【解决方案3】:

        这篇文章可能会有所帮助。 Click here

        【讨论】:

          猜你喜欢
          • 2021-09-15
          • 2015-11-24
          • 1970-01-01
          • 2019-11-11
          • 2017-03-02
          • 1970-01-01
          • 1970-01-01
          • 2021-04-27
          • 2019-05-20
          相关资源
          最近更新 更多