aru*_*run 4 php maatwebsite-excel laravel-6
我正在使用 Maatwebsite Excel 3.1 来实现导出功能。我们如何设置单元格的背景颜色和标题的字体大小?您能帮我解决这个问题吗?
谢谢你!
首先,实施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')->getFont()
->setSize(16)
->setBold(true)
->getColor()->setRGB('0000ff')
Run Code Online (Sandbox Code Playgroud)设置第二列的背景颜色:
$sheet->getStyle('B')->getFill()
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB('FFFF0000');
Run Code Online (Sandbox Code Playgroud)设置单元格的边框厚度:
$sheet->getStyle('D3')->getBorders()->getAllBorders()
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK);
Run Code Online (Sandbox Code Playgroud)设置行高:
$sheet->getRowDimension('1')->setRowHeight(26);
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)