Rumah > Artikel > rangka kerja php > 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
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; } }
在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
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!