SpringBoot+EasyPoi三步完成Excel导入导出_南国

EasyPOI入门 EasyPOI是一个基于Apache POI的Java库,用于简化Excel文档的导入和导出操作。EasyPOI通过注解的方式,极大地减少了代码量和复杂度,使得Excel操作变得更加简单直观。本篇博客将介绍如何使用EasyPOI进行Excel文件的导入和导出操作。通过上述步骤,您可以在 Spring Boot 项目中轻松集成并使用 EasyPOI 来处理 Excel 文件。EasyPOI 提供了丰富的注解和简化的 API,使得 Excel 操作变得更加方便和高效。 阅读详情
AI摘要

本文介绍EasyPoi库的使用方法,通过实例演示如何实现Excel的导入和导出功能,包括依赖引入、实体类编写、工具类创建及Controller编写等步骤。

easypoi官方文档:http://easypoi.mydoc.io/

什么是EasyPoi?

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

Easypoi的目标是什么

Easypoi的目标不是替代poi,而是让一个不懂导入导出的快速使用poi完成Excel和word的各种操作,而不是看很多api才可以完成这样工作

为什么会写Easypoi

以前的以前(岁月真TMD的快)我虽然写了不少代码但还是很少写poi,然后跳到一家公司之后就和业务人员聊上了,来这个需要个报表,这个报表样式是这样的,这个表头是这样的,就这样我写了大量的poi代码,每次都是大量的篇幅,copy to copy,无聊的一逼,然后加入了jeecg,jeecg中有一个小的工具类,虽然我也不知道是谁写的,然是可以用注解搞定最简单的导出,突然豁然开朗,我可以完善,让我从报表的苦海当中脱离出来,这样我花了一周的时间做了第一个版本支持导入导出放到了jeecg,发现还是不错的,慢慢的用的人越来越多,我就把这块独立出来了,再然后有人提出了模板,然后就加入了模板功能,提出了word的需求,加入了word的功能,后来工作忙了虽然没再参与jeecg,但还是一直维持这easypoi的更新,根据见识的增长也不断的重构这代码,直到现在

EasyPoi官网说的很66666666666666666666666666666

事实上,的确6666666666666666666666666666666666

三步完成一个报表的导入导出,你说6不6,费话不多少,直接开怼!

这是一道华丽的分割线-------------------------------------------------------------------------------------------------

第一步:引入依赖

<!--excel操作-->
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>3.3.0</version>
</dependency>

或者这样子

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-base</artifactId>
    <version>3.0.3</version>
</dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-web</artifactId>
    <version>3.0.3</version>
</dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-annotation</artifactId>
    <version>3.0.3</version>
</dependency>

第二步:编写实体类

@ExcelTarget("20")
@ApiModel
@Data
@TableName(value = "t_assets_info")
public class ExcelAssetsInfoEntity implements Serializable {
	private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
	@ApiModelProperty(value = "主键")
	@Excel(name = "id", width=15)
	private Integer id;
    /**
     * 资产信息名称
     */
	@ApiModelProperty(value = "资产信息名称")
	@Excel(name = "资产信息名称", orderNum = "0", width=30)
	private String assetsName;
    /**
     * 资产型号
     */
	@ApiModelProperty(value = "资产型号")
	@Excel(name = "资产型号", orderNum = "1", width=30)
	private String assetsNumber;
    /**
     * 放置区域
     */
	@ApiModelProperty(value = "放置区域")
	@Excel(name = "放置区域", orderNum = "2", width=30)
	private String assetsSpace;
    /**

这里的orderNum就是表格从左边到右边表格的内容

第三步:编写工具类

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 cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.multipart.MultipartFile;
 
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
 
//Excel导入导出工具类
public class ExcelUtils {
	public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
			boolean isCreateHeader, HttpServletResponse response) {
		ExportParams exportParams = new ExportParams(title, sheetName);
		exportParams.setCreateHeadRows(isCreateHeader);
		defaultExport(list, pojoClass, fileName, response, exportParams);
	}
 
	public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
			HttpServletResponse response) {
		defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
	}
 
	public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
		defaultExport(list, fileName, response);
	}
 
	private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
			ExportParams exportParams) {
		Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
		if (workbook != null)
			;
		downLoadExcel(fileName, response, workbook);
	}
 
	private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
		try {
			response.setCharacterEncoding("UTF-8");
			response.setHeader("content-Type", "application/vnd.ms-excel");
			response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
			workbook.write(response.getOutputStream());
		} catch (IOException e) {
			// throw new NormalException(e.getMessage());
		}
	}
 
	private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
		Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
		if (workbook != null)
			;
		downLoadExcel(fileName, response, workbook);
	}
 
	public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) {
		if (StringUtils.isBlank(filePath)) {
			return null;
		}
		ImportParams params = new ImportParams();
		params.setTitleRows(titleRows);
		params.setHeadRows(headerRows);
		List<T> list = null;
		try {
			list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
		} catch (NoSuchElementException e) {
			// throw new NormalException("模板不能为空");
		} catch (Exception e) {
			e.printStackTrace();
			// throw new NormalException(e.getMessage());
		}
		return list;
	}
 
	public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows,
			Class<T> pojoClass) {
		if (file == null) {
			return null;
		}
		ImportParams params = new ImportParams();
		params.setTitleRows(titleRows);
		params.setHeadRows(headerRows);
		List<T> list = null;
		try {
			list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
		} catch (NoSuchElementException e) {
			// throw new NormalException("excel文件不能为空");
		} catch (Exception e) {
			// throw new NormalException(e.getMessage());
			System.out.println(e.getMessage());
		}
		return list;
	}
 
}

到这里基本就算结束了,写Controller调用就好咯

-----------------------------------华丽的分割线----------------------------------------------

第四步:编写Controller

导出操作

@RestController
@RequestMapping("/excel/export")
@Api(tags = { "资产信息列表导出" })
public class ExcelExportController {

	@Autowired
	private AssetsInfoService assetsInfoService;
 
	@GetMapping("/exportExcel")
	public void export(HttpServletResponse response) {
		System.out.println(1);
		// 模拟从数据库获取需要导出的数据
		List<AssetsInfoEntity> personList = assetsInfoService.findAll();
		// 导出操作
		ExcelUtils.exportExcel(personList, "资产清单", "sheet1", AssetsInfoEntity.class, "资产信息.xls", response);
 
	}
}

导入操作

/**
 * 导入
 *
 * @param file
 */
@RequestMapping(value = "/import", method = RequestMethod.POST)
public ResultView importExcel(@RequestParam("file") MultipartFile file) {
    long start = System.currentTimeMillis();
    List<MonitorPersonImportVo> personVoList = ExcelUtils.importExcel(file, MonitorPersonImportVo.class);
    log.debug(personVoList.toString());
    log.debug("导入excel所花时间:" + (System.currentTimeMillis() - start));
    return getResponse(true, "导入成功");
}

导入导出都是工具类直接调用就好了EasyPoi封装的很完美,适合小白的我

第五步:使用丝袜哥进行测试

在这里插入图片描述
出来的是表格,所以用丝袜哥貌似看不到效果,只能看到200

那就放浏览器上访问接口,来看看结果

在这里插入图片描述
直接蹦出来下载文件,下载完成后打开,看看 结果
在这里插入图片描述
貌似很完美的导出了表格,这里如果导出几十万条数据,肯定需要考虑压力,这里先不说了,看下后台控制台打印
在这里插入图片描述打印了数字1,也很完美,这里的导出就测试完了,至于导入的话,有兴趣的可以自己测试下玩玩

EasyPoi的使用(2) EasyPoi的使用-第二天???? 官网网址:http://easypoi.mydoc.io/ 在第一天的代码上进行增加一些属性,改变导出的格式 EasyPoi的使用-第一天: https://blog.youkuaiyun.com/weixin_43669050/article/details/113334798 @Excel几个属性的用法???? 1、width属性 (1).修改User.java???? package com.demo1poi.day01.entity; import cn.aftertur 阅读详情

相关推荐

easypoi功能文档,介绍easypoi各种功能使用

easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 EasyPoi的主要特点 1.设计精巧,使用简单 2.接口丰富,扩展简单 3.默认值多,write less do more 4.spring mvc支持,web导出可以简单明了

EasyPoi的简介

Poi是Java操作MicroOffice(如对Excel的导入导出)的一个插件。POI的全称是(Poor Obfuscation Implementation)。官网地址是 http://poi.achache.org/index.html 。 EasyPOI对POI进行了优化,更加设计精巧,使用简单,接口丰富,扩展简单。EasyPOI的同类产品有Execel4J,Hutools等。官网地址是 https://gitee.com/lemur/easypoi ———————————————— 版权声明:本

hailunw的专栏 1万+

这是一个easyPoi的文档

easyPoi文档,这是一个easyPoi的文档。EasyPoi的编写其实是一次意外,之前我不太愿意写导入导出,因为代码号复杂,每次一个Excel 都要写几百行,仅有少量的复用,一次需要写许多的导入导出,又没有人手,正好看到了Jeecg对应Poi的一个封装,但是他的封装比较简单,就自己在他思想的基础上开始构建现在的项目了. EasyPoi秉承思想就是尽量简单,入库少,可以很快把简单的工作干了这是第一个版本的功能,后来慢慢用的人多了,也就功能慢慢丰富了,现在包含了Excel的导入导出,Word的导出,PDF的导出,Excel Charts的导出, Html的导出5个功能模块,重点还是Excel,毕竟Excel是最常用的. EasyPoi已经走过了3年,未来也会继续走,保持现有简单的功能继续前进. 文档来源:https://www.jianshu.com/p/6374b943b948

EasyPoi

easypoi的简单学习

ArchieSean 2万+

保姆级教程:在紫光同创Titan2 FPGA上实现PCIe DMA,实测带宽接近理论极限

本文详细介绍了在紫光同创Titan2 FPGA上实现PCIe DMA性能调优的全过程,通过参数优化和架构设计,实测带宽达到6.91GB/s,接近理论极限。涵盖开发环境搭建、PCIe IP核定制、DMA引擎设计、驱动开发及性能调优等关键步骤,为FPGA开发者提供实用指南。

weixin_30954817的博客 334

基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图

拿到多组学的数据后一直在找合适的方法将二者进行关联,比如我这里是三种体液的代谢组与一种体液的宏基因组。需求是对多组学进行关联分析,直到最近看到不少文章里利用Gephi将相关性表格进行可视化的图,效果还不错,于是写个过程记录自用。这里演示的是属水平的差异菌群相对丰度(宏基因组结果)与代谢组鉴定到的差异代谢物进行关联。先是计算相关性生成graphml格式文件使用Gephi软件进行可视化。

twocanis的博客 6785

easypoi

1.官网和文档介绍 1.官网地址 http://easypoi.mydoc.io/ 2.介绍 介绍easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法。 2.使用 介绍部分使用,具体使用可查看官网; 1.在pom....

lin_dark的博客 6818

23数字图像置乱技术(matlab程序)

所谓“置乱”,就是将图像的信息次序打乱,a像素移动到b像素位置上,b像素移动到c像素位置上,……,使其变换成杂乱无章难以辨认的图片。数字图像置乱技术属于加密技术,是指发送发借助数学或者其他领域的技术,对一幅有意义的数字图像做变换,使之变成一幅杂乱无章的图像用于传输。在图像传输过程中,它通过对图像像素矩阵的重排,破坏了图像矩阵的相关性,使非法截获者无法从杂乱无章的图像中获得原图像信息,以此实现信息的加密。接收方经去乱解密可恢复原图像。

m0_57943157的博客 1204

EasyPOI 操作Excel 实战总结

EasyPOI 学习总结

北执南念的博客 1万+

IMU标定中的Allen方差

Allen方差 Allen方差是IMU标定任务中的常用工具。IMU标定可以分为确定性误差和随机误差,确定性误差包括:scale、bias、misalignment。随机误差则主要是高斯白噪声和bias随机游走。Allen方差主要用于标定随机误差。 Allen方差获取 Allen方差的计算方法如下: 保持IMU静止, 采集N个数据点。 将N个点定长分组,常用的交叠式Allen方差如下(n=3): 对于每个子集,计算均值后,计算相邻两组的方差,得到的时间-方差曲线即为Allen方差。 Alle

realjc的博客 5733

PCL 4PCS算法实现点云粗配准【2026最新版】

博客长期更新,本文最新更新时间为:2026年5月11日。

点云侠的博客 30万+

EasyPoi 官方文档-优化版

工作中的很多项目都是基于EasyPoi的,但其官网截至2024年11月18日已经无法打开了。考虑到还有很多人在使用,于是通过网站快照整理了出来,并进行了优化和补充,更利于读者阅读及理解。

大话家的博客 2万+

CAN轴控制流【6041,6040】

【代码】CAN轴控制流【6041,6040】

cfqq1989的博客 1782

EasyPoi 教程

文章目录EasyPoi教程文档1. 前传1.1 前言这个服务即将关闭,文档迁移到 http://www.wupaas.com/ 请大家访问最新网站1.2 Easypoi介绍1.3 使用1.4 测试项目1.5 可能存在的小坑2. Excel 注解版2.1 Excel导入导出2.2 注解注解介绍@ExcelTarget@ExcelEntity@ExcelCollection@ExcelIgnore2.3 注解导出,导入2.3.1 对象定义2.3.2 集合定义2.3.3 图片的导出2.3.4 Excel导入介绍2

m0_58680865的博客 1万+

《Python星球日记》 第73天:情感分析与主题建模

《Python星球日记》 第73天:情感分析与主题建模,今天我们将探索两个自然语言处理领域的重要技术:情感分析和主题建模。这两项技术在社交媒体分析、用户反馈处理、市场研究等多个领域有着广泛应用。

Code_流苏:在代码中寻诗意,在实践中觅真知 918

【ComfyUI】Wan 2.2 14B 首尾帧转视频 平滑过渡

本文介绍了基于 Wan2.2 ComfyUI 的视频生成工作流,通过预训练模型、提示词与参考图像的结合,实现高质量视频合成。工作流采用高低噪声模型与 LoRA 模块优化风格与细节,确保画面过渡平滑稳定。核心流程包括模型加载、图像输入、提示词编码、潜空间采样、解码与视频合成,最终生成动态转场视频。节点设计涵盖 CLIPTextEncode、KSamplerAdvanced 等关键模块,协同完成从文本到视频的全链路生成。正向提示词作为核心驱动力,直接影响视频的动作、镜头与画面变化。

Mr数据杨 1701

EasyPOI

【代码】EasyPOI。

tomorrowAO的博客 3706

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

poi 操作excel总结

最近在做excel的导入导出工作,参考了几个框架easypoi,hutool,easyexcel,做一些总结。 1.easypoi 官网:http://easypoi.mydoc.io/ 优点:功能丰富,比较方便。有大数据量导出的功能 缺点:没有大数据量导入的功能 2.hutool 官网:https://hutool.cn/docs/#/poi/%E6%A6%82%E8%BF%B0 优点...

wangzifei1234的博客 1297

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Excel轻松操控:掌握EasyPoi的妙用技巧

本文将深入探讨EasyPoi库的基本使用,帮助读者轻松处理Excel文件。从创建工作簿到定义表头,再到填充数据,EasyPoi为Excel操作提供了简单而强大的解决方案。通过实用的代码示例和易懂的指南,本文将引导读者深入了解EasyPoi的核心功能,让Excel操作变得简单而愉快。无论您是初学者还是有经验的开发者,这篇博客都将成为您Excel处理工具箱中的得力助手。

学而时习之,不亦说乎?温故而知新,可以为师矣! 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

easy poi 导入Excel校验

easypoi 结合redis 导入校验,错误文件下载

qq_36483733的博客 5242

easypoi-基于POI,使用超简单,可定制的报表工具

研究了一整天Excel导入导出的博客,发现了easypoi这款工具,他是基于POI,具有使用简单,有一定可定制化的优点,满足报表不是很炫酷,数据量不是很大的数据导出(可能OOM)。官网:http://easypoi.mydoc.io/ 1、效果预览。定制了title、header、底部签名效果 2、依赖 <!--easypoi--> <dependen...

MJ的博客 1万+

EasyPoi-教程

easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法**Easypoi 为谁而开发不太熟悉poi的不想写太多重复太多的只是简单的导入导出的喜欢使用模板的都可以使用easypoiEasypoi的目标是什么。

qq_31362933的博客 4853

05 easyPoi的使用

2. 使用方式 1. 简单的excel表格可以使用在实体类属性上添加注解使用 实体类 属性上有@Excel注解的将会作为列被导出到excel中,列的名称就是Excel注解中name属性 接收前端请求 导入 导出 导入时校验导入的数据 导入导出工具类 2.复杂的excel可以先建造一个模板 模板 附上官方文档地址:http://doc.wupaas.com/docs/easypoi导出 FileExportUtils exportUtils = FileExportUtils.getInstance()

m0_46836425的博客 1481

导入导出这么丝滑,你用的是 EasyPoi 吗?

丝滑的 EasyPoi POI:用来处理 Excel、Word 等文件的技术。EasyPoi: 让没有接触过 POI 的人也能方便的写出 Excel 的导入导出功能。说白了就是用了 EasyPoi,文件的导入导出变得 so easy! 官网地址:http://easypoi.mydoc.io/ 1. SpringBoot整合EasyPoi 引入依赖 <dependency> <groupId>org.projectlombok</groupId> &l

知否技术的博客 1223

编码技巧——使用Easypoi导出Excel、多sheet、模板导出

本文主要介绍easypoi导出Excel的代码示例;自己之前手动实现过导出工具类《编码技巧——导出工具类》,基于实体和注解,通过反射来映射实体字段和exce列的关系;在部分工程里面看到了easypoi的二方包,于是准备试用下,记录下如何引入并使用Easypoi的过程;

娜娜米的博客 1万+

Springboot与easypoi(1):介绍、注解、基础使用

ApiModel("用户实体类")@Data@ApiModelProperty("用户id")@Excel(name = "用户id", orderNum = "0")@ApiModelProperty("用户名")@Excel(name = "用户名", orderNum = "1")@ApiModelProperty("密码")@Excel(name = "密码", orderNum = "2")@ApiModelProperty("年龄")

游王子og的博客 2610
上一篇: Java_SpringBoot+WebSocket长连接_独乐乐不如众乐乐_南国
下一篇: SpringBoot+zxing批量生成二维码_南国
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值