EasyExcel在SpringBoot中的简单使用

news/2024/11/22 22:42:36/

简介

EasyExcel是一个基于Apache POI的Excel处理工具,它能够以简单的方式读写大型Excel文件,并且性能高效、内存占用低。在SpringBoot中集成EasyExcel可以极大地提高数据处理效率。以下是EasyExcel在SpringBoot中的简单使用教程。

步骤1:添加依赖

首先,在你的SpringBoot项目的pom.xml文件中添加EasyExcel的依赖。以下是依赖配置:

 

xml

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.20</version>
</dependency>
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency>

步骤2:准备数据模型

创建一个用于存储数据的实体类。例如,我们创建一个Order类来表示订单信息:

 

java

import lombok.Data;@Data
public class Order {private Long id;private String productName;private Integer quantity;private BigDecimal price;
}

步骤3:实现Excel导出

定义一个名为ExcelExportUtil的工具类,其中包含一个静态方法writeToExcel。以下是导出Excel的示例代码:

 

java

import com.alibaba.excel.EasyExcel;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List;public class ExcelExportUtil {public static void writeToExcel(String filePath, List<Order> dataList) {// 定义文件输出位置FileOutputStream outputStream = new FileOutputStream(new File(filePath));// 写入ExcelEasyExcel.write(outputStream, Order.class).sheet("订单信息").doWrite(dataList);}
}

步骤4:实现Excel导入

创建一个自定义读监听器OrderExcelListener,用于处理读取Excel时的数据:

 

java

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;public class OrderExcelListener extends AnalysisEventListener<Order> {private List<Order> orderList = new ArrayList<>();@Overridepublic void invoke(Order order, AnalysisContext analysisContext) {orderList.add(order);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("所有数据解析完成!");}public List<Order> getOrderList() {return orderList;}
}

步骤5:Controller层实现

Controller层,添加两个接口,一个用于导出Excel,另一个用于导入Excel:

 

java

import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;@RestController
public class ExcelController {@GetMapping("/export")public void export(HttpServletResponse response) throws IOException {// 设置响应头response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");String fileName = URLEncoder.encode("订单信息", "UTF-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");// 模拟数据List<Order> orderList = new ArrayList<>();orderList.add(new Order(1L, "产品A", 10, new BigDecimal("100.00")));orderList.add(new Order(2L, "产品B", 20, new BigDecimal("200.00")));// 写入ExcelEasyExcel.write(response.getOutputStream(), Order.class).sheet("订单信息").doWrite(orderList);}@PostMapping("/import")public String importExcel(@RequestParam("file") MultipartFile file) throws IOException {OrderExcelListener listener = new OrderExcelListener();EasyExcel.read(file.getInputStream(), Order.class, listener).sheet().doRead();List<Order> orderList = listener.getOrderList();// 这里可以将数据保存到数据库orderList.forEach(System.out::println);return "导入成功!";}
}

步骤6:测试

启动SpringBoot应用后,访问以下接口进行测试:

  • 导出:http://localhost:8080/export
  • 导入:通过Postman等工具,发送POST请求到http://localhost:8080/import,并上传一个包含订单信息的Excel文件。

http://www.ppmy.cn/news/1549145.html

相关文章

【算法】动态规划中01背包问题解析

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

django基于Django的二手电子设备交易平台设计与开发

摘 要 科学技术日新月异&#xff0c;人们的生活都发生了翻天覆地的变化&#xff0c;二手电子设备交易平台管理当然也不例外。过去的信息管理都使用传统的方式实行&#xff0c;既花费了时间&#xff0c;又浪费了精力。在信息如此发达的今天&#xff0c;我们可以通过网络这个媒介…

使用Python3实现Gitee码云自动化发布

仓库信息 https://gitee.com/liumou_site/ip 实现代码 import osimport requests from loguru import loggerdef gitee(ver, message, prerelease: bool False):"""在 Gitee 上创建发布版本:param ver: 版本号:param message: 发布信息:param prerelease: 是…

Windws MySQL 8.4 LTS的安装(保姆级教程)

Windws MySQL 8.4 LTS的安装&#xff08;保姆级教程&#xff09; 一、Mysql版本二、Mysql下载三、Mysql安装3.1 Mysql安装3.2 Mysql配置 四、Mysql环境变量配置五、验证Mysql 一、Mysql版本 美国时间 2024 年 4 月 30 日&#xff0c;Oracle正式发布了MySQL数据库8.0.37版本的更…

使用 LSTM(长短期记忆网络) 模型对时间序列数据(航空旅客人数数据集)进行预测

代码功能 数据准备 加载数据&#xff1a;从公开的航空旅客人数数据集&#xff08;Airline Passengers Dataset&#xff09;中读取时间序列数据。 对数变换和平稳化&#xff1a;对数据应用 log1p 函数减少趋势和波动&#xff0c;使模型更容易学习规律。 归一化处理&#xff1a;…

Modern Effective C++ Item 11:优先考虑使用deleted函数而非使用未定义的私有声明

C98 方法&#xff1a;private C98 将特殊成员函数&#xff08;如拷贝构造函数和拷贝赋值运算符&#xff09;声明为私有且不定义。这种方法可以防止客户端调用这些函数&#xff0c;但如果在成员函数或友元函数中调用这些函数&#xff0c;会在链接时引发错误。C11 使用 delete …

MongoDB 监控:确保数据库性能和可靠性

MongoDB 监控&#xff1a;确保数据库性能和可靠性 MongoDB 是一个流行的开源 NoSQL 数据库&#xff0c;以其灵活的文档模型和强大的查询语言而闻名。然而&#xff0c;为了确保 MongoDB 的性能和可靠性&#xff0c;监控是至关重要的。本文将讨论 MongoDB 监控的重要性、关键监控…

linux安装TDengine

linux安装TDengine 下载tar.gz安装包&#xff0c;下载地址&#xff1a;使用安装包快速体验 TDengine | TDengine 文档 | 涛思数据 创建TD的安装目录&#xff0c;并将下载好的安装包复制到此目录下。 mkdir /usr/local/tdengine/ 解压安装包 tar -zxvf TDengine-server-3.2.…