Excel表格的导入导出——EasyExcel

article/2025/9/8 12:52:53

参考视频
csdn参考地址

一、导入依赖

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version>
</dependency>

二、实体类

  • 方式一:@Excel Property()用来设置表头
  • 方式二:@ExcelProperty(value=“名称”,index=索引)
@ToString					
@Data						//set、get、toString方法
@NoArgsConstructor			//无参构造方法
@ExcelIgnoreUnannotated		//没有标注的字段不被导出文件
public class Student{@ExcelProperty("编号")private Integer id;@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;@ExcelProperty("电话")private String phone;@ExcelProperty("生日")private Date birthday;public Student(String name,Integer age,Integer id){this.name = name;this.age = age;this.id = id;}
}

三、工具类

public class StudentReadListener implements ReadListener<Student>{List<Student> list = new ArrayList<>();//每读一行触发一次@Overridepublic void invoke(Student student,AnalysisContext analysisContext){System.out.println("读取到"+student);list.add(student);}//都读完后触发一次@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext){System.out.println("读取完毕");}
}

四、 导入

  • 在测试类里面试一下就行了
public void importExcel() throws FileNotFoundException{//1. 读取文件的流File file = new File("D:/student.xlsx");InputStream is = new FileInputStream(file);//2. 创建一个读取监听器StudentReadListener listener = new StudentReadListener();//3. 导入的参数配置EasyExcel.read(is,Student.class,listener).excelType(ExcelTypeEnum.CSV).sheet(0)			//读第几个工作表,从0开始.headRowNumber(1)	//列头占几行.doRead();)
}	
  • 有的同学在这里可能会成功运行但是读不出Excel的数据来
    在这里插入图片描述
  • 那么让我们来看一下到底是代码的问题还是说文件的问题
  • 在这里我要读出的文件是在D:/student.xslx 在这里插入图片描述
  • 那我们把文件改一下,改成一个不存在的文件,看看是什么反映
    在这里插入图片描述
  • 说明刚刚代码确实是指向了“D:/student.xlsx”文件,所以在连接方面是没有问题的。那么是代码配置问题还是说文件有问题。
  • 回到这个问题,我发现读取到Student的次数跟我Excel文件中的行数是一样的,是不是巧合呢?
    在这里插入图片描述
  • 于是我把Excel里面的内容清空了,得到了如下结果
    在这里插入图片描述
  • 意思就是说读到了Excel文件的行列,但就是返回的时候变成了null,所以我猜测是不是没有将Excel表中的字段一 一对应插入Student模型中
  • 到这里看到网上一大堆有的没的,都是不靠谱的解决办法,于是我先进行Excel文件的导出,如果能够导出,那我对这个导出文件进行导入,因为导出Excel的文件格式肯定是对的,并且导出代码中的配置参数也用于导入代码中就好了。
  • 下面 “五、导出” 是没问题的
  • 然后我将相同的导出参数配置到导入参数配置中
        //这是导出Excel表格的参数配置EasyExcel.write(response.getOutputStream()).head(Student.class).excelType(ExcelTypeEnum.XLSX).sheet("数据").doWrite(list);}//同样应用于导入Excel表格的参数配置EasyExcel.read(inputStream, Student.class,listener).excelType(ExcelTypeEnum.XLSX).sheet("数据")			//读第几个工作表,从0开始.headRowNumber(1)	//列头占几行.doRead();	
  • 结果是成功了
    在这里插入图片描述
  • 虽然不知道为什么导入不成功,但是通过先将文件导出,再导入,那就没问题了

五、 导出

  • 通过localhost:8080/export,就可以导出文件了
    @GetMapping("/export")public void exportExcel(HttpServletResponse response) throws IOException {List<Student> list = new ArrayList<>();list.add(new Student("梅超风",19,3342));list.add(new Student("西门灵风",39,5621));list.add(new Student("司马长风",25,82145));response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");response.setCharacterEncoding("utf-8");//设定要导出的excel的文件名String fileName = URLEncoder.encode("student","UTF-8").replaceAll("\\+","%20");response.setHeader("Content-disposition","attachment;filename="+fileName+".xlsx");//导出Excel表格EasyExcel.write(response.getOutputStream()).head(Student.class).excelType(ExcelTypeEnum.XLSX).sheet("数据").doWrite(list);}

http://chatgpt.dhexx.cn/article/jP7Ew53m.shtml

相关文章

实现Excel的导入、导出

实现Excel的导入、导出 关于excel的操作在工作中经常会遇到&#xff0c;如果只是一次性使用的话&#xff0c;最简单的方式就是通过数据库的可视化工具&#xff08;如Navicat&#xff09;查询结果集之后直接一键生成excel了&#xff0c;当然这只能解燃眉之急&#xff0c;并不是…

EasyExcel复杂excel导入

EasyExcel复杂excel导入 easyexcel官方都是一些简单的导入到处示例&#xff0c;复杂的excel文档导入&#xff0c;还得自己去慢慢琢磨、百度、思考、总结、学习、观察。 代码地址在文档的最后&#xff0c;如果你也遇到这种需求&#xff0c;不妨动动你的小拇指&#xff0c;点个…

导出Excel的方式

*数据是表格的形式&#xff0c;进常用到Excel *在程序中经常可以看到有导出Excel文档&#xff0c;Excel导入数据的情况&#xff0c;现在我就说一下我学到的导出Excel *导出Excel有两种方法&#xff0c;第一种是自己设置表头的&#xff0c;第二种是填充的&#xff0c;现在我说的…

Excel文件导入导出操作

> 注意&#xff01;注意&#xff01;&#xff01;注意&#xff01;&#xff01;&#xff01; 文末有惊喜彩蛋&#xff0c;请注意查收&#xff01;日常开发工作中对于文件的相关操作大家多少都会涉及&#xff1a;上传解析、数据导出等。此篇内容主要分享一下工作中常用的Exce…

Java实现Excel导入导出

一、导入 前言&#xff1a;导入必须用post请求 具体原因在2中叙述 1、Excel导入 总结一下目标&#xff0c;就是要将excel中的数据行、逐一提取&#xff0c;最后得到一个list&#xff0c;这个list的每个元素就是excel的每个数据行的实例&#xff0c;之后的操作就是常规的jav…

Java实现Excel导入

实现前准备&#xff08;导入所需要的依赖&#xff09; <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.22</version></dependency><dependency><groupId>org.apache.…

导入Excel文件的方法

我们在做一些项目的时候通常会遇到有导入文件的这种需求&#xff0c;下面我给大家分享一下导入Excel文件的方法。 首先我们得准备一个模板&#xff0c;下图就是一个简单的EX导入模板&#xff0c; 下图就是一个导入模板&#xff0c; 我们先把导入模板写好&#xff0c; 还有一个…

两种方式导入excel

第一种 easyExcel pom文件导入 com.alibaba easyexcel 2.2.3 然后 /** * 导入用户excel * param * return */ PostMapping(“manage/imporAcc”) Message<?> imporAcc(RequestParam(“accountFile”) MultipartFile file,RequestParam(“role”)String role,Request…

Java实现Excel导入和导出,看这一篇就够了(珍藏版)

目录 目录 前言 1. 功能测试 1.1 测试准备 1.2 数据导入 1.2.1 导入解析为JSON 1.2.2 导入解析为对象&#xff08;基础&#xff09; 1.2.3 导入解析为对象&#xff08;字段自动映射&#xff09; 1.2.4 导入解析为对象&#xff08;获取行号&#xff09; 1.2.5 导入解析…

常见机器学习面试题

参考&#xff1a;http://kubicode.me/2015/08/16/Machine%20Learning/Common-Interview/?fromsinglemessage# http://blog.csdn.NET/heyongluoyao8/article/details/49429629 http://lib.csdn.Net/article/machinelearning/33798 http://www.cnblogs.com/zuochongyan/p/540705…

机器学习面试题60~100

61.说说梯度下降法 LeftNotEasy&#xff0c;本题解析来源&#xff1a;http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html 下面是一个典型的机器学习的过程&#xff0c;首先给出一个输入数据&#…

深度学习机器学习面试题汇——模型优化,轻量化,模型压缩

深度学习机器学习面试题汇——模型优化&#xff0c;轻量化&#xff0c;模型压缩 提示&#xff1a;互联网大厂可能考的面试题 若CNN网络很庞大&#xff0c;在手机上运行效率不高&#xff0c;对应模型压缩方法有了解吗 介绍一下模型压缩常用的方法&#xff1f;为什么用知识蒸馏&…

Python干货:破解40大机器学习面试题(包含初中高级)

机器学习&#xff08;ML&#xff09;是我们世界的未来。在未来的几年中&#xff0c;几乎每种产品都将包含ML组件。ML预计将从2020年的$ 7.3B增长到2024年的$ 30.6B。对ML技能的需求遍及整个行业。 机器学习面试是一个严格的过程&#xff0c;在此过程中&#xff0c;应聘者会评估…

2021机器学习面试必考面试题汇总(附答案详解)

问题&#xff1a;Xgboost、lightGBM和Catboost之间的异同&#xff1f; 树的特征 三种算法基学习器都是决策树&#xff0c;但是树的特征以及生成的过程仍然有很多不同。 CatBoost使用对称树&#xff0c;其节点可以是镜像的。CatBoost基于的树模型其实都是完全二叉树。 XGBoo…

机器学习面试题之——简单介绍最小二乘

1、常用到的最小二乘场合&#xff1a;最小二乘法直线拟合&#xff0c;最小二乘法多项式&#xff08;曲线&#xff09;拟合&#xff0c;机器学习中线性回归的最小二乘法&#xff0c;系统辨识中的最小二乘辨识法&#xff0c;参数估计中的最小二乘法&#xff0c;等等。 2、为什么…

AI人工智能、机器学习 面试题(2022最新版)

人工智能、机器学习面试题总结&#xff0c;侧重于理解&#xff0c;回答供参考&#xff0c;欢迎讨论。 General 深度学习&#xff08;Deep Learning, DL&#xff09;和机器学习&#xff08;Machine Learning, ML&#xff09;的关系是什么&#xff1f; 深度学习是机器学习的子类…

面试官最爱用的统计学、数据科学、机器学习面试题答案

【导读】本文盘点了数据科学和机器学习面试中的常见问题&#xff0c;着眼于不同类型的面试问题。如果您计划向数据科学领域转行&#xff0c;这些问题一定会有所帮助。 技术的不断进步使得数据和信息的产生速度今非昔比&#xff0c;并且呈现出继续增长的趋势。此外&#xff0c;…

41个机器学习面试题

####41 Essential Machine Learning Interview Questions (with answers) <font color‘orange’&#xff0c;size5>一、算法理论 Q1: 什么是偏倚&#xff08;bias&#xff09;、方差&#xff08;variable&#xff09;均衡&#xff1f; 偏倚指的是模型预测值与真实值的…

推荐收藏,25道机器学习面试问题(附答案)

近年来&#xff0c;对深度学习的需求不断增长&#xff0c;其应用程序被应用于各个商业部门。各公司现在都在寻找能够利用深度学习和机器学习技术的专业人士。 在本文中&#xff0c;将整理深度学习面试中最常被问到的25个问题和答案。如果你最近正在参加深度学习相关的面试工作…

机器学习面试题之机器学习基础(一)

1、L1与L2正则化 他们都是可以防止过拟合&#xff0c;降低模型复杂度。 L1会趋向于产生少量的特征&#xff0c;而其他的特征都是0&#xff1b;L2会选择更多的特征&#xff0c;这些特征都会接近于0。L1在特征选择时非常有用&#xff0c;L2就只是一种规则化而已。 简单总结一下就…