如何使用Hyperf框架進行Excel導出
匯出資料到Excel是我們在開發過程中經常遇到的需求之一。在Hyperf框架下,我們可以藉助第三方函式庫PhpSpreadsheet來實現Excel導出的功能。本文將詳細介紹如何使用Hyperf框架進行Excel導出,並提供具體的程式碼範例。
一、安裝依賴函式庫
首先,需要在Hyperf框架專案中安裝PhpSpreadsheet函式庫。在專案根目錄下執行以下指令:
composer require phpoffice/phpspreadsheet
二、建立匯出類別
我們先建立一個Excel匯出的類,用於封裝匯出功能的具體實作。在AppUtils
目錄下建立ExcelExporter.php
文件,程式碼如下:
namespace AppUtils; use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx; class ExcelExporter { public static function export($data, $fileName, $headers, $title = null) { // 创建Excel对象 $spreadsheet = new Spreadsheet(); // 设置工作表名称 $worksheet = $spreadsheet->getActiveSheet(); $worksheet->setTitle($title ?: 'Sheet1'); // 写入表头 foreach ($headers as $key => $header) { $column = chr(65 + $key); // 列名,如A、B、C... $worksheet->setCellValue($column.'1', $header); } // 写入数据 $row = 2; // 数据行起始行号 foreach ($data as $item) { foreach ($item as $key => $value) { $column = chr(65 + $key); // 列名,如A、B、C... $worksheet->setCellValue($column.$row, $value); } $row++; } // 导出Excel文件 $writer = new Xlsx($spreadsheet); $writer->save($fileName); } }
以上程式碼中,export
方法接收四個參數:
$data
: 需要匯出的數據,二維陣列$fileName
: 匯出的檔案名,含檔案路徑$headers
: 表頭,一維陣列$title
: 工作表名稱,可選參數,預設為Sheet1三、使用導出類別
完成導出類別的編寫後,我們可以在需要匯出資料的控制器中進行呼叫。以下是一個範例,以匯出使用者資訊為例:
<?php namespace AppController; use AppUtilsExcelExporter; use HyperfHttpServerAnnotationAutoController; /** * @AutoController() */ class UserController extends AbstractController { public function export() { // 模拟数据 $data = [ ['id' => 1, 'name' => 'Tom', 'age' => 18], ['id' => 2, 'name' => 'Jerry', 'age' => 20], ['id' => 3, 'name' => 'Alice', 'age' => 22], ]; // 表头 $headers = ['ID', '姓名', '年龄']; // 文件名 $fileName = '/path/to/export/user.xlsx'; // 调用导出方法 ExcelExporter::export($data, $fileName, $headers, '用户信息'); return $this->success('导出成功'); } }
在上述範例中,我們模擬了一組使用者資訊數據,設定了表頭和匯出的檔案名稱。呼叫匯出方法後,成功匯出Excel文件,並傳回匯出成功的提示。
四、總結
使用Hyperf框架進行Excel導出,可以利用PhpSpreadsheet函式庫提供的功能,透過封裝導出類別來實現。透過以上程式碼範例,我們可以快速實現資料匯出到Excel檔案的功能。同時,我們也可以根據實際需求對導出類別進行擴展,以滿足更多複雜的導出需求。
以上是如何使用Hyperf框架進行Excel導出的詳細內容。更多資訊請關注PHP中文網其他相關文章!