使用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 PhpofficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet();
-
寫入客戶信息:
$sheet->setCellValue('A1', '客戶名稱'); $sheet->setCellValue('B1', $data['customer']);
-
寫入產品信息標題:
$sheet->setCellValue('A2', '產品名稱'); $sheet->setCellValue('B2', '配件'); $sheet->setCellValue('C2', '容量');
-
寫入產品信息并合并單元格:
$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));
-
保存Excel文件:
$writer = new Xlsx($spreadsheet); $writer->save('output.xlsx');
這段代碼首先寫入客戶信息和產品信息標題,然后循環遍歷產品信息并寫入單元格。 $product[‘rongliang’] ?? ” 用于處理可能缺失的rongliang字段。最后,它合并了C列的單元格,使所有產品共享一個容量值(如果所有產品的容量都相同)。 如果產品容量不同,則不需要合并C列單元格。
通過以上步驟,即可生成一個包含合并單元格的Excel文件,有效地組織和展示數據。 請根據實際數據情況調整代碼,例如,如果產品信息字段更多,需要相應地調整列數和合并單元格的范圍。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END