如何使用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文件的功能。同時,我們也可以根據實際需求對導出類進行擴展,以滿足更多復雜的導出需求。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END