首頁  >  文章  >  php框架  >  如何使用Hyperf框架進行Excel導入導出

如何使用Hyperf框架進行Excel導入導出

王林
王林原創
2023-10-25 12:13:471840瀏覽

如何使用Hyperf框架進行Excel導入導出

如何使用Hyperf框架進行Excel導入導出

摘要:本文將介紹如何在Hyperf框架中實作Excel檔案的匯入和匯出功能,並給出了具體的程式碼範例。

關鍵字:Hyperf框架、Excel導入、Excel導出、程式碼範例

導入
首先,我們需要確保專案中安裝了phpoffice/phpspreadsheet 這個函式庫。可以透過在終端機中執行以下命令進行安裝:

composer require phpoffice/phpspreadsheet
  1. #建立控制器和路由
    首先,我們需要建立一個控制器來處理導入的邏輯。在app/Controller 目錄下建立一個ExcelController.php 文件,加入以下程式碼:
<?php

declare(strict_types=1);

namespace AppController;

use PhpOfficePhpSpreadsheetIOFactory;

class ExcelController
{
    public function import()
    {
        $uploadedFile = $this->request->file('excel_file');

        $spreadsheet = IOFactory::load($uploadedFile->getPathname());
        $worksheet = $spreadsheet->getActiveSheet();
        $data = $worksheet->toArray();

        // 处理导入逻辑
    }
}

然後,在config/routes.php 檔案中新增以下路由:

use AppControllerExcelController;

Router::post('/excel/import', [ExcelController::class, 'import']);
  1. 建立視圖
    resources/views 目錄中建立一個import.blade.php 文件,加入以下表單程式碼:
<form action="/excel/import" method="post" enctype="multipart/form-data">
    <input type="file" name="excel_file">
    <button type="submit">导入</button>
</form>
  1. 處理導入邏輯
    在控制器的import 方法中,我們使用PhpSpreadsheet# 函式庫加載上傳的Excel 文件,並將其轉換為陣列格式。然後,我們可以根據實際需求對資料進行處理。

匯出
匯出Excel檔案主要涉及兩個步驟:建立Excel檔案和下載Excel檔案。

  1. 建立Excel檔案
    在控制器中,我們可以使用 PhpSpreadsheet 函式庫建立一個 Excel 檔案。
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;

public function export()
{
    $spreadsheet = new Spreadsheet();
    $worksheet = $spreadsheet->getActiveSheet();

    // 设置表头
    $worksheet->setCellValue('A1', '姓名')
        ->setCellValue('B1', '年龄')
        ->setCellValue('C1', '性别');

    // 设置数据行
    $data = [
        ['张三', '20', '男'],
        ['李四', '30', '女'],
    ];
    $row = 2;
    foreach ($data as $item) {
        $column = 'A';
        foreach ($item as $value) {
            $worksheet->setCellValue($column . $row, $value);
            $column++;
        }
        $row++;
    }

    // 保存文件
    $writer = new Xlsx($spreadsheet);
    $writer->save('storage/export.xlsx');
}
  1. 下載Excel檔案
    匯出完成後,我們可以透過設定回應頭資訊來實現檔案下載的功能。
use PsrHttpMessageStreamInterface;
use SymfonyComponentConsoleOutputStreamOutput;

public function download()
{
    $file = 'storage/export.xlsx';
    
    return $this->response->withHeader('Content-Disposition', 'attachment;filename=' . $file)
        ->withHeader('Pragma', 'public')
        ->withHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
        ->withHeader('Content-Length', filesize($file))
        ->withBody(new StreamOutput(fopen($file, 'r')));
}

在路由檔案中新增以下路由:

Router::get('/excel/download', [ExcelController::class, 'download']);

將匯出的檔案儲存在storage 目錄下,並透過瀏覽器存取/ excel/download 即可實現檔案下載。

總結
本文詳細介紹如何使用Hyperf框架實現Excel檔案的匯入和匯出功能,並給出了具體的程式碼範例。透過簡單的配置和編碼,我們可以在Hyperf框架中快速實現Excel導入導出,提高開發效率。

以上是如何使用Hyperf框架進行Excel導入導出的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn