<?php

namespace App\Exports;

use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Fill;

class CommonExport
{
    protected function setCellWidth($event, $cells)
    {
        //设置列宽
        $event->sheet->getDelegate()->getColumnDimension('A')->setWidth(5);
        $event->sheet->getDelegate()->getColumnDimension('B')->setWidth(35);
        $event->sheet->getDelegate()->getColumnDimension('C')->setWidth(30);
        $event->sheet->getDelegate()->getColumnDimension('D')->setWidth(25);
        $event->sheet->getDelegate()->getColumnDimension('E')->setWidth(25);
        $event->sheet->getDelegate()->getColumnDimension('F')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('G')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('H')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('I')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('J')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('K')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('L')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('M')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('N')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('O')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('P')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('Q')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('R')->setWidth(20);
        $event->sheet->getDelegate()->getColumnDimension('S')->setWidth(20);

        for ($i = 0; $i <= 1000; $i++) {
            $event->sheet->getDelegate()->getRowDimension($i)->setRowHeight(30);
        }
        foreach ($cells as $k => $v) {
            //设置区域单元格垂直居中
            $event->sheet->getDelegate()->getStyle($v)->getAlignment()->setVertical('center');
            //设置区域单元格水平居中
            $event->sheet->getDelegate()->getStyle($v)->getAlignment()->setHorizontal('center');
            $event->sheet->getDelegate()->mergeCells($v);
        }
    }

    protected function setCellColor($cells, $event, $rgb = 'acc8cc')
    {
        foreach ($cells as $cell) {
            //设置区域单元格字体、颜色、背景等,其他设置请查看 applyFromArray 方法,提供了注释
            $event->sheet->getDelegate()->getStyle($cell)->applyFromArray([
                'font' => [
                    'name' => 'Arial',
                    'bold' => true,
                    'italic' => false,
                    'strikethrough' => false,
                    'color' => [
                        'rgb' => '000000'
                    ]
                ],
                'fill' => [
                    'fillType' => Fill::FILL_SOLID, //线性填充,类似渐变
                    'rotation' => 0, //渐变角度
                    'startColor' => [
                        'rgb' => $rgb //初始颜色
                    ],
                    //结束颜色,如果需要单一背景色,请和初始颜色保持一致
                    'endColor' => [
                        'argb' => $rgb
                    ]
                ]
            ]);
        }
    }

    protected function setCellColorBorders($cells, $event)
    {
        foreach ($cells as $cell) {
            $event->sheet->getDelegate()->getStyle($cell)->getBorders()->applyFromArray(
                [
                    'allBorders' => [
                        'borderStyle' => Border::BORDER_THIN,
                        'color' => [
                            'rgb' => '5F9EA0'
                        ]
                    ]
                ]
            );
        }
    }

}