如何使用PhpSpreadsheet將包含嵌套數組的數據導出為合并行的Excel文件?

如何使用PhpSpreadsheet將包含嵌套數組的數據導出為合并行的Excel文件?

使用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免費學習筆記(深入)”;

  1. 加載庫并創建對象:

    use PhpofficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx;  $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet();
  2. 寫入客戶信息:

    $sheet->setCellValue('A1', '客戶名稱'); $sheet->setCellValue('B1', $data['customer']);
  3. 寫入產品信息標題:

    $sheet->setCellValue('A2', '產品名稱'); $sheet->setCellValue('B2', '配件'); $sheet->setCellValue('C2', '容量');
  4. 寫入產品信息并合并單元格:

    $row = 3; foreach ($data['product'] as $product) {     $sheet->setCellValue('A' . $row, $product['name']);     $sheet->setCellValue('B' . $row, $product['parts']);     $sheet->setCellValue('C' . $row, $product['rongliang'] ?? ''); // 使用空字符串處理缺失的容量信息      $row++; } // 合并容量列單元格 (如果所有產品容量都相同,則可以合并) $sheet->mergeCells('C3:C' . ($row -1));
  5. 保存Excel文件:

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

這段代碼首先寫入客戶信息和產品信息標題,然后循環遍歷產品信息并寫入單元格。 $product[‘rongliang’] ?? ” 用于處理可能缺失的rongliang字段。最后,它合并了C列的單元格,使所有產品共享一個容量值(如果所有產品的容量都相同)。 如果產品容量不同,則不需要合并C列單元格。

通過以上步驟,即可生成一個包含合并單元格的Excel文件,有效地組織和展示數據。 請根據實際數據情況調整代碼,例如,如果產品信息字段更多,需要相應地調整列數和合并單元格的范圍。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享