首页 > 文章列表 > 使用PhpSpreadsheet将数组数据导出并合并行生成Excel表格的详细教程

使用PhpSpreadsheet将数组数据导出并合并行生成Excel表格的详细教程

163 2025-03-20

使用PhpSpreadsheet导出并合并Excel表格行数据

本文介绍如何利用PhpSpreadsheet库将数组数据导出为Excel表格,并实现行合并效果。假设您有一个如下所示的数组:

[
    "customer" => "西卡若卡",
    "product" => [
        [
            "name" => "瓶-500ml塑料瓶",
            "parts" => "24牙35克",
            "rongliang" => "500ml"
        ],
        [
            "name" => "内塞-500ml塑料瓶",
            "parts" => "19小孔内塞+盖板",
        ],
        [
            "name" => "盖子-500ml塑料瓶",
            "parts" => "24牙双层pp盖",
        ],
    ]
]

目标是将其导出为Excel表格,并合并客户名称所在的行,效果如下图所示:

如何使用PhpSpreadsheet将数组数据导出并合并行生成Excel表格?

PhpSpreadsheet 提供了 mergeCells() 方法来合并单元格。以下代码演示了如何使用该方法实现行合并:

use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

$data = [
    "customer" => "西卡若卡",
    "product" => [
        [
            "name" => "瓶-500ML塑料瓶",
            "parts" => "24牙35克",
            "rongliang" => "500ML"
        ],
        [
            "name" => "内塞-500ML塑料瓶",
            "parts" => "19小孔内塞+盖板",
        ],
        [
            "name" => "盖子-500ML塑料瓶",
            "parts" => "24牙双层PP盖",
        ],
    ]
];

$sheet->setCellValue('A1', '客户');
$sheet->setCellValue('B1', '产品名称');
$sheet->setCellValue('C1', '部件');
$sheet->setCellValue('D1', '容量');

$row = 2;
foreach ($data['product'] as $product) {
    $sheet->setCellValue('A' . $row, $data['customer']);
    $sheet->setCellValue('B' . $row, $product['name']);
    $sheet->setCellValue('C' . $row, $product['parts']);
    if (isset($product['rongliang'])) {
        $sheet->setCellValue('D' . $row, $product['rongliang']);
    }
    $row++;
}

// 合并客户列
$sheet->mergeCells('A2:A' . ($row - 1));

$writer = new Xlsx($spreadsheet);
$writer->save('example.xlsx');

这段代码首先设置表头,然后循环遍历数组数据写入单元格。最后,使用 mergeCells('A2:A' . ($row - 1)) 合并从 A2 到 A(最后一行) 的单元格。 请确保您已正确安装 PhpSpreadsheet 库。 运行此代码将生成一个名为 example.xlsx 的 Excel 文件,其中包含合并后的行数据。 此方法清晰地展示了如何使用 PhpSpreadsheet 实现数组数据导出和单元格合并。

来源:1741933401