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

Cara menggunakan rangka kerja Hyperf untuk import Excel

王林
王林asal
2023-10-21 08:42:551445semak imbas

Cara menggunakan rangka kerja Hyperf untuk import Excel

Cara menggunakan rangka kerja Hyperf untuk mengimport Excel, anda memerlukan contoh kod khusus

Pengenalan:
Dengan pembangunan pemformatan , elektronik Meja memainkan peranan penting dalam kerja harian kita. Semasa proses pembangunan, kita sering menghadapi situasi di mana kita perlu mengimport data daripada Excel ke dalam sistem. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk import Excel dan memberikan contoh kod khusus.

1. Pasang pemalam yang diperlukan
Sebelum menggunakan rangka kerja Hyperf untuk mengimport Excel, kita perlu memasang dua pemalam, iaitu PhpSpreadsheet dan hyperf/excel. Yang pertama ialah pustaka operasi hamparan PHP yang berkuasa, dan yang kedua ialah sambungan Excel bagi rangka kerja Hyperf. Pasang melalui Komposer:

composer require phpoffice/phpspreadsheet
composer require hyperf/excel

2. Cipta perkhidmatan import Excel

  1. Buat dalam direktori app/Excel Import dan buat kelas baharu dalam direktori Import, bernama ExcelImport. Kelas ini mewarisi daripada IlluminateDatabaseEloquentCollection dan akan digunakan untuk menyimpan data yang diimport. app/Excel目录下创建Imports目录,并在Imports目录下创建一个新的类,命名为ExcelImport。该类继承自IlluminateDatabaseEloquentCollection,将用于存储导入的数据。

    <?php
    
    namespace AppExcelImports;
    
    use IlluminateSupportCollection;
    
    class ExcelImport extends Collection
    {
     public function headingRow(): int
     {
         return 1;
     }
    }
  2. app/Excel目录下创建Services目录,并在Services目录下创建一个新的类,命名为ExcelService。该类中定义了一个import方法,用于实现Excel导入的逻辑。

    <?php
    
    namespace AppExcelServices;
    
    use AppExcelImportsExcelImport;
    use Exception;
    use HyperfDiAnnotationInject;
    use PhpOfficePhpSpreadsheetIOFactory;
    use HyperfExcelEventsAfterWriting;
    use HyperfExcelWriter;
    
    class ExcelService
    {
     /**
      * @Inject
      * @var Writer
      */
     protected $writer;
    
     public function import($file): array
     {
         $import = new ExcelImport();
         
         try {
             $spreadsheet = IOFactory::load($file);
             $worksheet = $spreadsheet->getActiveSheet();
             
             $import = $worksheet->toArray();
    
             // 将数据导入到ExcelImport
             $import->push($import);
         } catch (Exception $exception) {
             throw new Exception("Error in importing excel: " . $exception->getMessage());
         }
         
         // 触发事件,将导入的数据派发出去供其他业务逻辑使用
         event(new AfterWriting($this->writer, $import));
    
         return $import->all();
     }
    }

三、使用Excel导入服务
在需要使用Excel导入的地方,我们可以通过依赖注入的方式来使用刚刚创建的ExcelService。具体代码如下:

<?php

namespace AppController;

use AppExcelServicesExcelService;
use PsrContainerContainerInterface;

class ExcelController extends AbstractController
{
    /**
     * @var ExcelService
     */
    protected $excelService;

    public function __construct(ContainerInterface $container, ExcelService $excelService)
    {
        parent::__construct($container);
        $this->excelService = $excelService;
    }

    public function import()
    {
        $file = $this->request->file('file');
        $filePath = $file->getPathname();

        $data = $this->excelService->import($filePath);

        // 对导入数据进行处理,插入数据库或者其他业务逻辑

        return $this->response->success($data); // 返回导入的数据
    }
}

四、配置路由
最后,在config/routes.php

<?php

use HyperfHttpServerRouterRouter;

Router::post('/excel/import', 'AppControllerExcelController@import');

Buat direktori Services di bawah direktori app/Excel dan letakkan dalam ServicesBuat kelas baharu dalam direktori dan namakannya <code>ExcelService. Kelas ini mentakrifkan kaedah import untuk melaksanakan logik import Excel.
rrreee

3 Gunakan perkhidmatan import Excel #🎜🎜#Di mana kita perlu menggunakan import Excel, kita boleh menggunakan yang baru dibuat melalui suntikan pergantungan ExcelService kod>. Kod khusus adalah seperti berikut: #🎜🎜#rrreee#🎜🎜#4 Konfigurasi penghalaan #🎜🎜#Akhir sekali, konfigurasikan penghalaan dalam fail config/routes.php untuk mengendalikan permintaan import Excel: # 🎜 🎜#rrreee#🎜🎜#Ringkasan: #🎜🎜#Artikel ini memperkenalkan cara menggunakan rangka kerja Hyperf untuk import Excel dan menyediakan contoh kod khusus. Dengan mencipta perkhidmatan import, memanggil kaedah perkhidmatan dan mengkonfigurasi laluan, kami boleh melaksanakan fungsi mengimport data Excel ke dalam sistem dengan mudah. Pada masa yang sama, kami juga boleh memproses data yang diimport mengikut keperluan khusus untuk memenuhi keperluan logik perniagaan. Dengan menggunakan kaedah ini, kecekapan pembangunan boleh dipertingkatkan dan proses pembangunan dipermudahkan. #🎜🎜#

Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk import 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