>  기사  >  PHP 프레임워크  >  Excel 가져오기 및 내보내기에 Hyperf 프레임워크를 사용하는 방법

Excel 가져오기 및 내보내기에 Hyperf 프레임워크를 사용하는 방법

王林
王林원래의
2023-10-25 12:13:471827검색

Excel 가져오기 및 내보내기에 Hyperf 프레임워크를 사용하는 방법

Hyperf 프레임워크를 사용하여 Excel을 가져오고 내보내는 방법

요약: 이 문서에서는 Hyperf 프레임워크에서 Excel 파일 가져오기 및 내보내기 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

키워드: Hyperf 프레임워크, Excel 가져오기, Excel 내보내기, 코드 예제

Import
먼저 프로젝트에 phpoffice/phpspreadsheet 라이브러리가 설치되어 있는지 확인해야 합니다. 터미널에서 다음 명령을 실행하여 설치할 수 있습니다. 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/downloadrrreee

  1. 컨트롤러 및 경로 생성 먼저 가져온 로직을 처리할 컨트롤러를 생성해야 합니다. app/Controller 디렉토리에 ExcelController.php 파일을 생성하고 다음 코드를 추가합니다:
rrreee

그런 다음 config/ 경로 .php 파일에 다음 경로를 추가합니다:
rrreee

  1. 보기 만들기resources/views에서 import.blade 만들기 code> 디렉토리.php 파일에 다음 양식 코드를 추가합니다:
rrreee
  1. 가져오기 논리를 처리합니다. 🎜가져오기 컨트롤러의 code> 메서드에서는 <code>PhpSpreadsheet 라이브러리를 사용하여 업로드된 Excel 파일을 로드하고 배열 형식으로 변환합니다. 그러면 실제 필요에 따라 데이터를 처리할 수 있습니다.
🎜Export🎜Excel 파일 내보내기는 주로 Excel 파일 생성과 Excel 파일 다운로드의 두 단계로 구성됩니다. 🎜
  1. Excel 파일 만들기🎜컨트롤러에서 PhpSpreadsheet 라이브러리를 사용하여 Excel 파일을 만들 수 있습니다.
rrreee
  1. Excel 파일 다운로드 🎜내보내기가 완료된 후 응답 헤더 정보를 설정하여 파일 다운로드 기능을 구현할 수 있습니다.
rrreee🎜라우팅 파일에 다음 경로를 추가하세요: 🎜rrreee🎜내보낸 파일을 storage 디렉터리에 저장하고 브라우저를 통해 /excel/download에 액세스하세요. /code> 파일을 다운로드합니다. 🎜🎜요약🎜이 글에서는 Hyperf 프레임워크를 사용하여 Excel 파일 가져오기 및 내보내기 기능을 구현하는 방법을 자세히 소개하고 구체적인 코드 예제를 제공합니다. 간단한 구성과 코딩을 통해 Hyperf 프레임워크에서 Excel 가져오기 및 내보내기를 빠르게 구현하여 개발 효율성을 높일 수 있습니다. 🎜

위 내용은 Excel 가져오기 및 내보내기에 Hyperf 프레임워크를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.