热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用EasyExcel读写Excel

1、前言在没有EasyExcel之前我们经常使用Apache的poijar包进行excel的读写,配置起来比较麻烦,也比较消耗内存,阿里
1、前言

在没有EasyExcel之前我们经常使用Apache的poi jar包进行excel的读写,配置起来比较麻烦,也比较消耗内存,阿里开源了EasyExcel,配置上简化了,在一定程度上简化了内存溢出问题。

2、引入jar包

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>1.1.2-beta5</version>
</dependency>

3、读Excel

EasyExcel支持对实体类中的属性进行注解&#xff0c;方便后续进行读写操作。

//表示第0行&#xff0c;表头是id
&#64;ExcelProperty(value &#61; "id", index &#61; 0)

3.1 Student实体类

public class Student extends BaseRowModel {&#64;ExcelProperty(value &#61; "id", index &#61; 0)private Integer id;&#64;ExcelProperty(value &#61; "姓名",index &#61; 1)private String name;&#64;ExcelProperty(value &#61; "性别", index &#61; 2)private String sex;&#64;ExcelProperty(value &#61; "年级", index &#61; 3)private Integer grade;&#64;ExcelProperty(value &#61; "年龄", index &#61; 4)private Integer score;public Integer getId() {return id;}public void setId(Integer id) {this.id &#61; id;}public String getName() {return name;}public void setName(String name) {this.name &#61; name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex &#61; sex;}public Integer getGrade() {return grade;}public void setGrade(Integer grade) {this.grade &#61; grade;}public Integer getScore() {return score;}public void setScore(Integer score) {this.score &#61; score;}&#64;Overridepublic String toString() {return "Student{" &#43;"id&#61;" &#43; id &#43;", sex&#61;&#39;" &#43; sex &#43; &#39;\&#39;&#39; &#43;", grade&#61;" &#43; grade &#43;", score&#61;" &#43; score &#43;&#39;}&#39;;}
}

3.2 读取Excel

public static void readExcel(String fileName){try {//创建输入流InputStream inputStream &#61; new FileInputStream(fileName);//构建要添加Student类Sheet sheet &#61; new Sheet(1,1,Student.class);//读sheet表中的内容List<Object> studentList &#61; EasyExcelFactory.read(inputStream,sheet);List<Student> students &#61; new LinkedList<Student>();for (Object student : studentList){students.add((Student)student);}for (Student student : students){System.out.println(student);}} catch (Exception e) {e.printStackTrace();}}

//结果&#xff1a;
Student{id&#61;1, sex&#61;&#39;男&#39;, grade&#61;1, score&#61;12}
Student{id&#61;2, sex&#61;&#39;女&#39;, grade&#61;2, score&#61;13}

4、写Excel

public static void writeExcel(String fileName,List<Student> students) {OutputStream outputStream &#61; null;try {outputStream &#61; new FileOutputStream(fileName);ExcelWriter writer &#61; new ExcelWriter(outputStream, ExcelTypeEnum.XLSX);Sheet sheet &#61; new Sheet(2, 0, Student.class);writer.write(students, sheet);writer.finish();} catch (Exception e) {e.printStackTrace();} finally {if (outputStream !&#61; null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}}


推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文介绍了Python异常的捕获、传递与抛出操作,并提供了相关的操作示例。通过异常的捕获和传递,可以有效处理程序中的错误情况。同时,还介绍了如何主动抛出异常。通过本文的学习,读者可以掌握Python中异常处理的基本方法和技巧。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
author-avatar
郭先2502898821_918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有