如何在大型Excel网站的列中设置文本右对齐



我从这里获得引用: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,我们可以使用registerEventsMacro:


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');
},
];
}

最新更新