使用Maatwebsite Excel 3.1导出如何设置单元格的背景颜色和标题的字体大小?

aru*_*run 4 php maatwebsite-excel laravel-6

我正在使用 Maatwebsite Excel 3.1 来实现导出功能。我们如何设置单元格的背景颜色和标题的字体大小?您能帮我解决这个问题吗?

谢谢你!

Mat*_*usz 8

首先,实施WithHeadings并添加use RegistersEventListeners. 这将允许您使用afterSheet自动连接到事件的方法:

use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\RegistersEventListeners;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;

class BomExport implements FromArray, WithEvents
{
    use RegistersEventListeners;

    public static function afterSheet(AfterSheet $event)
    {
        // Add styling here
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

有关放置样式代码的其他方法,请查看文档

afterSheet方法中,您可以访问底层库及其Worksheet对象(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet):

$sheet = $event->sheet->getDelegate();
Run Code Online (Sandbox Code Playgroud)

使用该对象,您可以例如:

有关更多选项,请参阅文档

不幸的是,整行 ( $sheet->getStyle('1')) 和列 ( $sheet->getStyle('B')) 的样式在 Excel Mobile(版本 16001.12325.20032.0)中不起作用,我必须使用单元格范围($sheet->getStyle('A1:Z1')$sheet->getStyle('A1:A999')

把它放在一起:

use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\RegistersEventListeners;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;

class BomExport implements FromArray, WithEvents
{
    use RegistersEventListeners;

    public static function afterSheet(AfterSheet $event)
    {
        $sheet = $event->sheet->getDelegate();

        $sheet->getStyle('1')->getFont()->setSize(16);
        $sheet->getStyle('1')->getFill()
            ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
            ->getStartColor()->setARGB('FFFF0000');
        // ...
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)