love_php/app/Exports/Sheets/TestSheet.php
2026-04-02 09:20:51 +08:00

184 lines
7.8 KiB
PHP

<?php
namespace App\Exports\Sheets;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
class TestSheet implements FromCollection, WithTitle, WithEvents, WithStrictNullComparison, ShouldAutoSize
{
private $data;
public function __construct($data)
{
$this->data = $data;
}
/**
* @return Builder
*/
public function collection()
{
$data = $this->data;
$rows = [
['赤壁市解除医学观察证明书', '', '','','',''],
['姓名', $data[0], '性别', $data[1],'联系电话',$data[3]],
['身份证号', strval($data[2]).' ', '', '', '', ''],
['解除隔离目的地', $data[4], '', '', '', ''],
['隔离观察地点', '赤壁市铜锣湾酒店集中隔离医学观察点', '', '', '', ''],
['观察时间', '2022年6月7日至2022年6月13日', '','','',''],
['是否接触', '否', '解除单位', '赤壁市铜锣湾酒店集中隔离医学观察点', '', ''],
['负责人签字', '', '(盖章)', '','',''],
['赤壁市新型冠状病毒感染的肺炎防控指挥部 (存根联)', '','','','',''],
['', '', '','','',''],
['赤壁市解除医学观察证明书', '', '','','',''],
['姓名', $data[0], '性别', $data[1],'联系电话',$data[3]],
['身份证号', strval($data[2]).' ', '', '', '', ''],
['解除隔离目的地', $data[4], '', '', '', ''],
['隔离观察地点', '赤壁市铜锣湾酒店集中隔离医学观察点', '', '', '', ''],
['观察时间', '2022年6月7日至2022年6月11日', '','','',''],
['是否接触', '否', '解除单位', '赤壁市铜锣湾酒店集中隔离医学观察点', '', ''],
['负责人签字', '', '(盖章)', '','',''],
['赤壁市新型冠状病毒感染的肺炎防控指挥部 (出具联)', '','','','',''],
];
return collect($rows);
}
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
//设置列宽
$arr = ['A','B','C','D','E','F'];
foreach ($arr as $value) {
$event->sheet->getDelegate()->getColumnDimension($value)->setWidth(20);
}
//设置行高,$i为数据行数
for ($i = 0; $i<=1265; $i++) {
$event->sheet->getDelegate()->getRowDimension($i)->setRowHeight(30);
}
//设置区域单元格垂直居中
$event->sheet->getDelegate()->getStyle('A1:K1265')->getAlignment()->setVertical('center');
//设置区域单元格水平居中
$event->sheet->getDelegate()->getStyle('A1:F8')->getAlignment()->setHorizontal('center');
$event->sheet->getDelegate()->getStyle('A11:F18')->getAlignment()->setHorizontal('center');
//设置区域单元格字体、颜色、背景等,其他设置请查看 applyFromArray 方法,提供了注释
$event->sheet->getDelegate()->getStyle('A1:F9')->applyFromArray([
'borders'=> [
'allBorders' => [
'borderStyle' =>'thin',
]
]
]);
$event->sheet->getDelegate()->getStyle('A11:F19')->applyFromArray([
'borders'=> [
'allBorders' => [
'borderStyle' =>'thin',
]
]
]);
$event->sheet->getDelegate()->getStyle('1')->applyFromArray([
'font' => [
'name' => 'Arial',
'bold' => true,
'italic' => false,
'strikethrough' => false,
'size' => 20,
'color' => [
'rgb' => '000000'
],
],
// 'fill' => [
// 'fillType' => 'linear', //线性填充,类似渐变
// 'rotation' => 45, //渐变角度
// 'startColor' => [
// 'rgb' => '000000' //初始颜色
// ],
// //结束颜色,如果需要单一背景色,请和初始颜色保持一致
// 'endColor' => [
// 'argb' => 'FFFFFF'
// ]
// ],
]);
$event->sheet->getDelegate()->getStyle('2:9')->applyFromArray([
'font' => [
'name' => 'Arial',
'bold' => false,
'italic' => false,
'strikethrough' => false,
'size' => 12,
'color' => [
'rgb' => '000000'
],
],
]);
$event->sheet->getDelegate()->getStyle('11')->applyFromArray([
'font' => [
'name' => 'Arial',
'bold' => true,
'italic' => false,
'strikethrough' => false,
'size' => 20,
'color' => [
'rgb' => '000000'
]
],
]);
$event->sheet->getDelegate()->getStyle('12:19')->applyFromArray([
'font' => [
'name' => 'Arial',
'bold' => false,
'italic' => false,
'strikethrough' => false,
'size' => 12,
'color' => [
'rgb' => '000000'
],
],
]);
//合并单元格
$event->sheet->getDelegate()->mergeCells('A1:F1');
// $event->sheet->getDelegate()->mergeCells('B2:F2');
$event->sheet->getDelegate()->mergeCells('B3:F3');
$event->sheet->getDelegate()->mergeCells('B4:F4');
$event->sheet->getDelegate()->mergeCells('B5:F5');
$event->sheet->getDelegate()->mergeCells('B6:F6');
$event->sheet->getDelegate()->mergeCells('D7:F7');
$event->sheet->getDelegate()->mergeCells('C8:F8');
$event->sheet->getDelegate()->mergeCells('A9:F9');
$event->sheet->getDelegate()->mergeCells('A11:F11');
$event->sheet->getDelegate()->mergeCells('B13:F13');
$event->sheet->getDelegate()->mergeCells('B14:F14');
$event->sheet->getDelegate()->mergeCells('B15:F15');
$event->sheet->getDelegate()->mergeCells('B16:F16');
$event->sheet->getDelegate()->mergeCells('D17:F17');
$event->sheet->getDelegate()->mergeCells('C18:F18');
$event->sheet->getDelegate()->mergeCells('A19:F19');
}
];
}
/**
* @return string
*/
public function title(): string
{
return ($this->data)[0].'__sheet';
}
}