如何使所有单元格在Laravel Excel中包装文字并完成所有边框

时间:2019-11-25 04:43:08

标签: excel laravel phpspreadsheet maatwebsite-excel laravel-excel

我想使用Laravel Excel导出结果,但是结果与我想要的不匹配。 enter image description here

我想要的是这样的 enter image description here

我希望所有单元格都用文本包裹并有完整的边框。

这是我的代码:

class SdgsExportView2 implements FromView, WithTitle {

    protected $id_perangkat_daerah;

    function __construct($id_perangkat_daerah) {
        $this->id_perangkat_daerah = $id_perangkat_daerah;
    }

    public function view(): View
    {
        $data_sdgs = DataSdgs::where('id_perangkat_daerah',$this->id_perangkat_daerah)
        ->with('indikator.target.sdgs')
        ->with('detail_data_sdgs.kegiatan.program.perangkat_daerah')
        ->get();
        return view('template.exportMatrik2', [
            'data_sdgs' => $data_sdgs
        ]);
    }

    public function registerEvents(): array
    {
        return [
            AfterSheet::class    => function(AfterSheet $event) {
                $cellRange = 'A1:W100'; // All headers
                $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);
                $event->sheet->getDelegate()->getStyle($cellRange)->getAlignment()->setWrapText(true);
            }
        ];
    }

    public function title() : string
    {
        return 'MATRIK 2';
    }
}

我真的希望您的帮助

1 个答案:

答案 0 :(得分:0)

我知道答案(在8个月后)有点晚,但是在代码中添加边框格式相对简单。 在事件函数AfterSheet::class => function(AfterSheet $event)中,您需要添加以下代码:

    $styleHeader = [
                'borders' => [
                    'allBorders' => [
                        'borderStyle' => 'thin',
                        'color' => ['rgb' => '808080']
                    ],
                ]
            ];
    $event->sheet->getStyle("A1:C1")->applyFromArray($styleHeader);

然后用标题范围替换“ A1:C1”。