我从这里获得引用:https://laravel-excel.maatwebsite.nl/3.0/getting-started/
我一直在寻找如何设置文本正确对齐,但我没有在文档中找到它
我的脚本导出如下:
<?php
namespace AppExports;
use MaatwebsiteExcelConcernsExportable;
use IlluminateContractsViewView;
use MaatwebsiteExcelConcernsFromView;
class InvoiceExport implements FromView
{
use Exportable;
public function view(): View
{
$data = Invoice::get();
return view('exports.item', [
'data' => $data
]);
}
}
我该如何解决这个问题?
更新
我找到了一个解决方案,但它不是完美的
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
$event->sheet->styleCells(
'C2:C1000',
[
'alignment' => [
'horizontal' => PhpOfficePhpSpreadsheetStyleAlignment::HORIZONTAL_RIGHT,
],
]
);
},
];
}
它有效。但我的记录是动态的。它可以是1000条记录。它可以是10000条记录
在我上面的脚本中,它只是从C2阻塞到C1000。我想设置C列中的所有记录
我该怎么做?
对于Laravel Excel 3.1.12,我们可以使用registerEvents
和Macro
:
use MaatwebsiteExcelSheet;
...
public function registerEvents(): array
{
return [
// array callable, refering to a static method.
AfterSheet::class => [self::class, 'afterSheet'],
];
}
public static function afterSheet(AfterSheet $event)
{
Sheet::macro('styleCells', function (Sheet $sheet, string $cellRange, array $style) {
$sheet->getDelegate()->getStyle($cellRange)->applyFromArray($style);
});
$event->sheet->styleCells('D:D', [
'alignment' => [
'horizontal' => PhpOfficePhpSpreadsheetStyleAlignment::HORIZONTAL_RIGHT,
],
]);
}
...
只需使用C:C即可选择整个列:
'C:C',
[
'alignment' => [
'horizontal' => PhpOfficePhpSpreadsheetStyleAlignment::HORIZONTAL_RIGHT,
],
]
以下代码适用于我的
$event->sheet->getStyle('A1:B48')->getAlignment()->setHorizontal('center');
1-首先将此添加到顶部:
AfterSheet
use MaatwebsiteExcelEvents{
BeforeExport,
AfterSheet
};
2-Second使用YourClass 实现WithEvents
WithEvents
class YourClass implements WithEvents {
3-第三次添加此类主体:
getAlignment
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
// multi cols
$event->sheet->getStyle('A:B')->getAlignment()->setHorizontal('center');
// single col
$event->sheet->getStyle('D')->getAlignment()->setHorizontal('center');
},
];
}