
利用PhpSpreadsheet导出Excel数据并合并行
本文介绍如何使用PhpSpreadsheet库将包含客户及产品信息的复杂嵌套数组数据导出到Excel表格,并实现单元格合并。
场景描述
假设我们拥有如下结构的数组数据:
$data = [
"customer" => "西卡若卡",
"product" => [
[
"name" => "瓶-500ml塑料瓶",
"parts" => "24牙35克",
"rongliang" => "500ml"
],
[
"name" => "内塞-500ml塑料瓶",
"parts" => "19小孔内塞+盖板",
],
[
"name" => "盖子-500ml塑料瓶",
"parts" => "24牙双层pp盖",
],
]
];
目标是将客户名称在Excel第一行合并显示,产品信息在其下逐行展开。
实现方案
以下步骤利用PhpSpreadsheet完成数据导出和单元格合并:
立即学习“PHP免费学习笔记(深入)”;
-
加载库并创建对象:
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet();
-
写入客户信息并合并单元格:
$sheet->setCellValue('A1', '客户: ' . $data['customer']); $sheet->mergeCells('A1:C1'); // 合并A1到C1单元格 -
写入产品信息:
$row = 2; // 从第二行开始写入 foreach ($data['product'] as $product) { $sheet->setCellValue('A' . $row, $product['name']); $sheet->setCellValue('B' . $row, $product['parts']); if (isset($product['rongliang'])) { $sheet->setCellValue('C' . $row, $product['rongliang']); } $row++; } -
保存Excel文件:
$writer = new Xlsx($spreadsheet); $writer->save('example.xlsx');
通过以上步骤,即可生成包含合并单元格和嵌套数组数据的Excel文件。此方法具有良好的灵活性和可扩展性,适用于处理各种复杂的数组结构。










