Spring Boot中Excel的导入导出的实现之EasyPoi框架使用教程

文章目录

  • 前言
  • 一、EasyPoi的使用
    • 1. 添加EasyPoi依赖
    • 2. 创建实体类
    • 3. 编写Controller
    • 4. 编写导出Excel的方法
    • 5. 编写导入Excel的方法
    • 6. 编写导出Excel的方法
    • 7. 创建ExcelUtil工具类(可选)
  • 二、EasyPoi 的注解
  • 总结


前言

  EasyPoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法。

开源仓库地址:

  • https://gitee.com/lemur/easypoi
  • https://github.com/liurenjin/easypoi

一、EasyPoi的使用

当使用Spring Boot结合EasyPoi进行Excel导入导出时,你需要考虑以下详细步骤:

1. 添加EasyPoi依赖

确保在你的Spring Boot项目的pom.xml文件中添加EasyPoi的依赖:

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>2.3.0</version>
</dependency>

引入的依赖版本根据自己的需求自行选择

2. 创建实体类

创建用于映射Excel中数据的实体类,确保字段名称和Excel中的列名对应。你可以使用EasyPoi提供的注解来指定Excel中的格式和样式。

示例:

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;@Data
public class User {@Excel(name = "ID", width = 20)private Long id;@Excel(name = "姓名", width = 20)private String name;@Excel(name = "年龄", width = 20)private Integer age;
}

3. 编写Controller

编写一个Controller来处理Excel导入导出的请求。在这里,你需要使用@RestController@RequestMapping注解来标识该类和映射URL。

4. 编写导出Excel的方法

在Controller中编写导出Excel的方法,使用EasyPoi提供的API来生成Excel文件并将其返回给前端。

示例:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@RestController
public class UserController {@GetMapping("/exportUsers")public void exportUsers(HttpServletResponse response) throws IOException {List<User> userList = getUserList(); // 从数据库或其他地方获取用户数据ExcelUtil.exportExcel(userList, "用户列表", "用户信息", User.class, "用户信息.xls", response);}private List<User> getUserList() {// 从数据库或其他地方获取用户数据return new ArrayList<>();}
}

5. 编写导入Excel的方法

在Controller中编写导入Excel的方法,使用EasyPoi提供的API来解析上传的Excel文件,并将数据存储到数据库或进行其他相应的处理。

示例:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;@RestController
public class UserController {@PostMapping("/importUsers")public String importUsers(@RequestParam("file") MultipartFile file) {List<User> userList = ExcelUtil.importExcel(file, 1, 1, User.class);// 将用户数据保存到数据库或进行其他处理return "导入成功";}
}

6. 编写导出Excel的方法

在 ExportService 类中,编写了一个导出用户数据的方法,通过 EasyPoi 的 ExcelExportUtil.exportExcel 方法将用户数据导出为 Excel 文件。最后在 Controller 类中,定义了一个导出接口,当请求该接口时触发导出操作。

// 导出逻辑的 Service 类
@Service
public class ExportService {public void exportUsers(HttpServletResponse response) {List<User> userList = userService.getAllUsers(); // 假设从数据库获取用户数据// 设置响应头response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=users.xlsx");// 使用 EasyPoi 进行导出ExcelExportUtil.exportExcel(new ExportParams("用户列表", "用户"), User.class, userList, response.getOutputStream());}
}// Controller 类
@RestController
@RequestMapping("/export")
public class ExportController {@Autowiredprivate ExportService exportService;@GetMapping("/users")public void exportUsers(HttpServletResponse response) {exportService.exportUsers(response);}
}

7. 创建ExcelUtil工具类(可选)

为了更好地组织代码,你可以创建一个工具类来封装EasyPoi的导入导出方法。

示例:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import org.apache.poi.ss.usermodel.Workbook;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;public class ExcelUtil {public static void exportExcel(List<?> dataList, String sheetName, String title, Class<?> clazz, String fileName, HttpServletResponse response) throws IOException {ExportParams exportParams = new ExportParams(title, sheetName);Workbook workbook = ExcelExportUtil.exportExcel(exportParams, clazz, dataList);response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", "attachment;filename=" + fileName);workbook.write(response.getOutputStream());}public static <T> List<T> importExcel(MultipartFile file, int titleRows, int headerRows, Class<T> clazz) {ImportParams importParams = new ImportParams();importParams.setTitleRows(titleRows);importParams.setHeadRows(headerRows);try {return ExcelImportUtil.importExcel(file.getInputStream(), clazz, importParams);} catch (Exception e) {e.printStackTrace();}return null;}
}

以上是使用Spring Boot结合EasyPoi进行Excel导入导出的详细步骤和示例代码,仅供参考。


二、EasyPoi 的注解

以下是一个表格列出 EasyPoi 的注解详细介绍:

注解作用属性
@Excel标识实体类的字段,在 Excel 中指定列名、宽度等属性name, width, replace, type
@ExcelIgnore标识实体类的字段,表示在 Excel 导入导出过程中忽略该字段
@ExcelCollection标识实体类中的集合类型字段,表示该字段为一个子表格name
@ExcelTarget标识实体类,指定 Excel 中一个 Sheet 页与之对应value
@ExcelEntity标识实体类中的嵌套实体字段,表示该字段为一个嵌套表格name
@ExcelProperty标识 DTO 类中的字段,指定在 Excel 中的列名和顺序value, index

这个表格可以帮助你更清晰地了解每个 EasyPoi 注解的作用和属性。


总结

  • 本文简单讲述了Spring Boot中Excel的导入导出的实现之EasyPoi框架使用教程,涉及到EasyPoi的使用步骤以及一些注解的介绍。
  • 欢迎大家提出建议以及批评,有任何问题可以私信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02-JAVA面向对象编程

一、面向对象编程 1、面向过程编程思想&#xff08;Process Oritented Programming&#xff09; 将实现一个功能的一组指令组合在一起&#xff0c;成为一个函数。这个函数就能实现这一个功能&#xff0c;是对功能实现的一种抽象。通过这种抽象方式&#xff0c;将代码实现复用。…

JavaScript中什么是类,如何使用?

在JavaScript中&#xff0c;类是一种用于创建对象的模板。它定义了对象的属性和方法&#xff0c;并可以通过实例化来创建具体的对象。类提供了一种结构化的方式来组织和管理代码&#xff0c;使得代码更易于理解和维护。 下面我将通过三个例子来详细说明JavaScript中类的概念和…

情景题之小明的Linux实习之旅:linux实战练习1(上)【基础命令,权限修改,日志查询,进程管理...】

小明的Linux实习之旅&#xff1a;基础指令练习情景练习题 背景介绍场景1&#xff1a;初识Linux&#xff0c;创建目录和文件场景2&#xff1a;权限管理&#xff0c;小明的权限困惑场景3&#xff1a;打包与解压&#xff0c;小明的备份操作场景4&#xff1a;使用Grep&#xff0c;…

代码随想录算法训练营第三十一天| 455.分发饼干,376. 摆动序列 ,53. 最大子序和

455. 分发饼干 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g); //递增Arrays.sort(s); int result 0;//遍历&#xff0c;先满足小的int i0,j0;for(;i<g.length && j<s.length;i){…

视觉大模型(VLLM)学习笔记

视觉多模态大模型&#xff08;VLLM&#xff09; InternVL 1.5 近日&#xff0c;上海人工智能实验室 OpenGVLab 团队、清华大学、商汤科技合作推出了开源多模态大语言模型项目InternVL 1.5&#xff0c;它不仅挑战了商业模型巨头例如 GPT-4V 的霸主地位&#xff0c;还让我们不禁…

Python3 笔记:字符串的 zfill() 和 rjust()

1、zfill() 方法返回指定长度的字符串&#xff0c;原字符串右对齐&#xff0c;前面填充0。 语法&#xff1a;str.zfill(width) width &#xff1a;指定字符串的长度。原字符串右对齐&#xff0c;前面填充0。 str1 2546 str2 2 print(str1.zfill(10)) # 运行结果&#xff1…

golang基础

Go安装及配置环境 下载最新的 zip 文件: go#.#.#.windows-amd64.zip &#xff0c;这里的 #.#.# 是 Go 的最新版本号。 解压缩 go#.#.#.windows-amd64.zip 文件到你选择的位置。比如D:\Go 在系统中设置两个环境变量&#xff1a;GOROOT和GOPATH GOPATH 指向的是你的工作目录。…

树莓派4B 零起点(三) 树莓派 VNC 远程桌面配置(2) 配置X11模式

目录 一、配置 VNC Server为X11 1、关闭已启动的VNC Server (如之前未开启&#xff0c;此步可以忽略) 2、切换 VNC Server的模式为 X11 二、开启 X11 VncServer 三、修改树莓派VNC Server的连接模式 1、切换到 root 账号 2、修改VNC Server X11的配置 3、设置VNC密码…

引人入胜的教育视频

对于一家专注于数字自动化和能源管理的跨国公司&#xff0c;我们制作了引人入胜的教育视频&#xff0c;帮助房主选择适合他们需求的电气产品。我们的团队审查并定稿文本&#xff0c;录制并编辑配音&#xff0c;选择背景音乐&#xff0c;设计图形&#xff0c;并制作了演示如何安…

MYSQL基础_02_MySQL环境搭建

第02章_MySQL环境搭建 1. MySQL的卸载 步骤1&#xff1a;停止MySQL服务 在卸载之前&#xff0c;先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0c;打开“任务管理器”对话框&#xff0c;可以在“服务”列表找到“MySQL8.0”的服务&#xff0c;如果现…

Android RadioButton+GridLayout实现多行多列的单选效果

记录下实现过程,因为最近项目里要用到。我们都知道默认的RadioGroup+RadioButton是不能实现轻松换行的。如果每行使用一个RadioGroup来包裹RadioButton的话。其中的选择监听是个非常麻烦的事情。那么今天记录下RadioButton+GridLayout。 首先xml布局中添加一个GridLayout控件…

【设计模式】基本名词

主流的编程风格 主流的编程方式/编程风格有三种&#xff1a; 面向过程面向对象函数式编程&#xff1a; 将电脑运算视为函数运算&#xff0c;并且避免使用程序状态以及易变对象。具体请看&#xff1a;深入理解函数式编程 面向对象是其中最主流的编程风格&#xff0c;得益于其…

Springboot校园美食推荐系统的开发-计算机毕业设计源码44555

摘要 随着人们生活水平的提高&#xff0c;人们对美食的要求也越来越高&#xff0c;对各类美食信息需求越来越大。因此&#xff0c;结合计算机快速发展、普及&#xff0c;在此基础上制作一个页面简单、美观,功能实用的校园美食推荐系统势在必行&#xff0c;满足用户分享美食的需…

前端nvm的安装和使用nodejs多版本管理2024

nvm的安装和使用 1、简介 nvm是一个管理nodejs版本的工具。在实际的开发中&#xff0c;项目的开发依赖需要的nodejs版本运行环境不同&#xff0c;此时我们就需要使用nvm来进行不同nodejs版本的切换。其实就是一个方便的node版本管理工具。 注意&#xff1a;如果有安装过node&a…

nw.js 如何调用activeX控件 (控件是C++编写的dll文件)

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

第1章Hello world 4/5:对比Rust/Java/C++创建和运行Hello world全过程:运行第一个程序

讲动人的故事,写懂人的代码 1.7 对比Rust/Java/C++创建和运行Hello world全过程 有了会听懂人类的讲话,还能做记录的编程助理艾极思,他们三人的讨论内容,都可以变成一份详细的会议纪要啦。 接下来,我们一起看看艾极思是如何记录下赵可菲创建和运行Java程序Hello world,…

本地搭建支持语音和文本的中英文翻译服务-含全部源代码

实现目标 1、支持文本中英文互译&#xff1b; 2、支持中文语音输入&#xff1b; 3、支持英文语言输入&#xff1b; 进阶&#xff08;未实现&#xff09; 4、优化web界面&#xff1b; 5、优化语音输入js实现逻辑&#xff1b; 6、增加语音输入自纠错模型&#xff0c;纠正语音识别…

服务架构模式演化

一、分布式和集群 在介绍分布式架构之前&#xff0c;先说一下单体架构&#xff0c;顾名思义&#xff0c;所谓单体架构&#xff0c;就是只有一台服务器&#xff0c;这台服务器负责所有的工作。 但是一台主机硬件资源是有上限的&#xff08;CPU、内存、硬盘、网络……&#xff…

代码随想录算法训练营第三十二天| 122.买卖股票的最佳时机II,55. 跳跃游戏 ,45.跳跃游戏II

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {if(prices.length 0){return 0;}int min prices[0];int result 0;for(int i1;i<prices.length;i){if(prices[i] > min){result (prices[i]…