php 多表头导出
时间: 2023-08-10 12:09:40 浏览: 43
使用 EasyExcel 进行多表头导出,可以使用 `mergeCells` 方法合并单元格,示例代码如下:
```php
use EasyExcel\Factory;
// 定义导出数据
$data = [
['学生信息', '', '', '', '班级信息', '', '', ''],
['姓名', '年龄', '性别', '分数', '班级', '教师', '课程', '学期'],
['张三', 20, '男', 90, '一班', '李老师', '数学', '2022-01'],
['李四', 25, '女', 85, '二班', '王老师', '语文', '2022-01'],
['王五', 30, '男', 95, '一班', '张老师', '英语', '2022-01'],
];
// 导出 Excel
$exportFile = 'example.xlsx';
$exportPath = __DIR__ . '/' . $exportFile;
$writer = Factory::createWriter('Xlsx');
$writer->openToFile($exportPath);
// 设置列宽
$writer->setDefaultColumnWidth(15);
// 设置表头
$writer->addRow($data[0], ['fontBold' => true, 'fill' => ['type' => 'solid', 'color' => ['argb' => 'DDDDDD']]]); // 第一行表头
$writer->addRow($data[1], ['fontBold' => true, 'fill' => ['type' => 'solid', 'color' => ['argb' => 'DDDDDD']]]); // 第二行表头
// 合并单元格
$writer->mergeCells('A1:A2');
$writer->mergeCells('B1:B2');
$writer->mergeCells('C1:C2');
$writer->mergeCells('D1:D2');
$writer->mergeCells('E1:H1');
// 添加数据
for ($i = 2; $i < count($data); $i++) {
$writer->addRow($data[$i]);
}
// 保存 Excel
$writer->close();
// 下载 Excel
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $exportFile . '"');
readfile($exportPath);
exit;
```
以上示例代码中,我们通过 `mergeCells` 方法合并第一行中的前四列和第二行中的第五列到第八列,实现了多表头导出的效果。同时,我们通过 `setDefaultColumnWidth` 方法设置了默认列宽,通过 `fontBold` 和 `fill` 参数设置了表头的样式。
阅读全文