如何使用Hyperf框架进行Excel导入导出
摘要:本文将介绍如何在Hyperf框架中实现Excel文件的导入和导出功能,并给出了具体的代码示例。
关键字:Hyperf框架、Excel导入、Excel导出、代码示例
导入
首先,我们需要确保项目中安装了 phpoffice/phpspreadsheet 这个库。可以通过在终端中执行以下命令进行安装:1
composer require phpoffice/phpspreadsheet
创建控制器和路由
首先,我们需要创建一个控制器来处理导入的逻辑。在 app/Controller 目录下创建一个 ExcelController.php 文件,添加以下代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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();
// 处理导入逻辑
}
}
1
2
3
use AppControllerExcelController;
Router::post(/excel/import, [ExcelController::class, import]);
创建视图
在 resources/views 目录中创建一个 import.blade.php 文件,添加以下表单代码:1
导入 处理导入逻辑
在控制器的 import 方法中,我们使用 PhpSpreadsheet 库加载上传的 Excel 文件,并将其转换为数组格式。然后,我们可以根据实际需求对数据进行处理。导出
导出Excel文件主要涉及两个步骤:创建Excel文件和下载Excel文件。创建Excel文件
在控制器中,我们可以使用 PhpSpreadsheet 库创建一个 Excel 文件。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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);
}
下载Excel文件
导出完成后,我们可以通过设置响应头信息实现文件下载的功能。1
2
3
4
5
6
7
8
9
10
11
12
13
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)));
}
在路由文件中添加以下路由:
1
Router::get(/excel/download, [ExcelController::class, download]);
将导出的文件存储在 storage 目录下,并通过浏览器访问 /excel/download 即可实现文件下载。
总结
本文详细介绍了如何使用Hyperf框架实现Excel文件的导入和导出功能,并给出了具体的代码示例。通过简单的配置和编码,我们可以在Hyperf框架中快速实现Excel导入导出,提高开发效率。以上就是如何使用Hyperf框架进行Excel导入导出的详细内容,更多请关注php中文网其它相关文章!