在Phpspreadsheet中如何將數組數據導出為Excel文件并實現行合并?

在Phpspreadsheet中如何將數組數據導出為Excel文件并實現行合并?

利用PhpSpreadsheet導出excel文件并實現行合并

本文演示如何使用PhpSpreadsheet庫將數組數據導出為Excel文件,并實現指定行的合并。假設我們有一個包含客戶和產品信息的數組,需要將其格式化并輸出到Excel文件中。

數組結構如下:

$data = [     "customer" => "西卡若卡",     "product" => [         [             "name" => "瓶-500ml塑料瓶",             "parts" => "24牙35克",             "rongliang" => "500ml"         ],         [             "name" => "內塞-500ml塑料瓶",             "parts" => "19小孔內塞+蓋板",         ],         [             "name" => "蓋子-500ml塑料瓶",             "parts" => "24牙雙層pp蓋",         ],     ] ];

目標Excel文件格式如下:

| 客戶   | 產品名稱            | 零件            | 容量  | | ------- | ------------------- | --------------- | ----- | | 西卡若卡 | 瓶-500ml塑料瓶     | 24牙35克       | 500ml | |         | 內塞-500ml塑料瓶   | 19小孔內塞+蓋板 |       | |         | 蓋子-500ml塑料瓶   | 24牙雙層pp蓋   |       |

實現步驟:

立即學習PHP免費學習筆記(深入)”;

  1. 加載PhpSpreadsheet庫并初始化工作表:
require 'vendor/autoload.php'; //  假設你已通過composer安裝了phpspreadsheet  use PhpofficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx;  $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet();
  1. 寫入表頭:
$sheet->setCellValue('A1', '客戶'); $sheet->setCellValue('B1', '產品名稱'); $sheet->setCellValue('C1', '零件'); $sheet->setCellValue('D1', '容量');
  1. 寫入數據并合并單元格:
$row = 2; $sheet->setCellValue("A{$row}", $data['customer']);  foreach ($data['product'] as $product) {     $sheet->setCellValue("B{$row}", $product['name']);     $sheet->setCellValue("C{$row}", $product['parts']);     $sheet->setCellValue("D{$row}", $product['rongliang'] ?? ''); // 使用空字符串處理缺失的容量     $row++; }  // 合并'客戶'列的單元格 $sheet->mergeCells("A2:A{$row-1}");
  1. 保存Excel文件:
$writer = new Xlsx($spreadsheet); $writer->save('output.xlsx');

這段代碼首先初始化PhpSpreadsheet對象和工作表,然后寫入表頭數據。接著,它迭代處理產品數據,將數據寫入相應的單元格。最后,它使用mergeCells()方法合并’客戶’列從第二行到最后一行的數據單元格,從而達到預期的效果。 確保你的項目中已正確安裝并包含PhpSpreadsheet庫。 如有任何錯誤,請檢查你的PhpSpreadsheet安裝和包含路徑。

通過以上步驟,即可成功使用PhpSpreadsheet庫生成包含合并單元格的Excel文件。 記得參考PhpSpreadsheet官方文檔獲取更詳細的信息和更多高級功能。

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