Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan rangka kerja Hyperf untuk import dan eksport Excel

Cara menggunakan rangka kerja Hyperf untuk import dan eksport Excel

王林
王林asal
2023-10-25 12:13:471684semak imbas

Cara menggunakan rangka kerja Hyperf untuk import dan eksport Excel

Cara menggunakan rangka kerja Hyperf untuk mengimport dan mengeksport Excel

Abstrak: Artikel ini akan memperkenalkan cara melaksanakan fungsi import dan eksport fail Excel dalam rangka kerja Hyperf, dan memberikan contoh kod khusus.

Kata kunci: Rangka kerja Hyperf, import Excel, eksport Excel, contoh kod

Import
Pertama, kita perlu memastikan bahawa pustaka phpoffice/phpspreadsheet dipasang dalam projek. Ia boleh dipasang dengan melaksanakan arahan berikut dalam terminal: 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. Buat pengawal dan laluan Pertama, kita perlu mencipta pengawal untuk mengendalikan logik yang diimport. Cipta fail ExcelController.php dalam direktori app/Controller dan tambahkan kod berikut:
rrreee

Kemudian, dalam config/ route Tambah laluan berikut pada fail .php:
rrreee

  1. Buat paparan Buat import.blade dalam <code>sumber/pandangan kod> fail php, tambahkan kod borang berikut:
rrreee
  1. Proses logik import 🎜Dalam import code> kaedah pengawal , kami menggunakan pustaka <code>PhpSpreadsheet untuk memuatkan fail Excel yang dimuat naik dan menukarnya kepada format tatasusunan. Kemudian, kita boleh memproses data mengikut keperluan sebenar.
🎜Eksport🎜Mengeksport fail Excel terutamanya melibatkan dua langkah: mencipta fail Excel dan memuat turun fail Excel. 🎜
  1. Buat fail Excel🎜Dalam pengawal, kita boleh mencipta fail Excel menggunakan pustaka PhpSpreadsheet.
rrreee
  1. Muat turun fail Excel 🎜Selepas eksport selesai, kami boleh melaksanakan fungsi muat turun fail dengan menetapkan maklumat pengepala respons.
rrreee🎜Tambah laluan berikut dalam fail penghalaan: 🎜rrreee🎜Simpan fail yang dieksport dalam direktori storan dan akses /excel/download melalui penyemak imbas untuk memuat turun fail. 🎜🎜Ringkasan🎜Artikel ini memperkenalkan secara terperinci cara menggunakan rangka kerja Hyperf untuk melaksanakan fungsi import dan eksport fail Excel, dan memberikan contoh kod khusus. Melalui konfigurasi dan pengekodan yang mudah, kami boleh melaksanakan import dan eksport Excel dengan pantas dalam rangka kerja Hyperf untuk meningkatkan kecekapan pembangunan. 🎜

Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk import dan eksport Excel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn