分类 技术专栏 下的文章

需求:对顶部单元格进行合并,添加统一提示信息,然后在下面导出header和data数据
1、合并单元格,这里用到registerEvents,示例如下

public function registerEvents () : array
    {
        // TODO: Implement registerEvents() method.
        return [
            BeforeSheet::class => function(BeforeSheet $event){
                $content = "测试内容";//填充内容
                $event->sheet->getDelegate()->mergeCells('A1:D2');//要合并的单元格
                $event->sheet->getDelegate()->getRowDimension('1')->setRowHeight(20);//设置单元格高度
                $event->sheet->getDelegate()->getCell('A1')->setValue($content);//填充单元格
                $event->sheet->getDelegate()->getStyle('A1:D1')->getAlignment()->setWrapText(true);
                $event->sheet->getDelegate()->fromArray($this->data->toArray(), null, 'A3');
            }
        ];
    }

说明:这里是是合并顶部第一、第二行,并填充备注信息
注:需要在Export头部里面引入WithEvents
2、追加内容,这里用到fromArray
示例:

    $event->sheet->getDelegate()->fromArray($this->data->toArray(), null, 'A3');//从第几行开始追加,这里需要将数据转为array

3、最终效果如下
WX20230612-170326@2x.png

更多扩展内容,请参考官方文档:
https://docs.laravel-excel.com/3.1/exports/extending.html

描述:
array_change_key_case() 函数将数组的所有的键都转换为大写字母或小写字母。
使用:
array_change_key_case(array,case);
参数说明:
array 必需。规定要使用的数组。
case 可选。可能的值:CASE_LOWER - 默认值。将数组的键转换为小写字母。CASE_UPPER - 将数组的键转换为大写字母。
示例:

$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));

//返回如下
Array
(
    [FIRST] => 1
    [SECOND] => 4
)

该函数一般配合getallheaders()函数使用,获取所有header内容
例如:

$headers = array_change_key_case(getallheaders(), CASE_LOWER);

更多信息请参考:https://www.php.net/manual/zh/function.array-change-key-case.php