Java中使用EasyExcel实现读写xlsx操作
java中使用EasyExcel实现读写操作EasyExcel通过excel表格来读写数据java中使用EasyExcel实现读写操作前言一、EasyExcel是什么?二、使用步骤1.创建一个java项目,引入依赖2.写操作3.写操作前言传统Excel操作或者解析都是利用Apach POI进行操作,但是使用过这个框架的人都知道,这个框架并不完美,有较多的缺陷:使用步骤繁琐动态写出Excel操作非常
·
java中使用EasyExcel实现读写操作
EasyExcel通过excel表格来读写数据
前言
传统Excel操作或者解析都是利用Apach POI进行操作,但是使用过这个框架的人都知道,这个框架并不完美,有较多的缺陷:
- 使用步骤繁琐
- 动态写出Excel操作非常麻烦
- 对于新手来说,很难在短时间内上手
- 读写时需要占用较大的内容,当数据量大时容器发生OOM
基于上述原因,阿里开源出一款易上手,且比较节省内存的Excel操作框架:EasyExcel
一、EasyExcel是什么?
EasyExcel 是一个基于 Java 的简单、省内存的读写 Excel 的开源项目。在尽可能节约内存的情况下支持读写百 M 的 Excel
easyExcel的GitHub地址:https://alibaba-easyexcel.github.io/index.html
二、使用步骤
1.创建一个java项目,引入依赖
<!-- easyexcel 依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
2.写操作
首先需要创建一个实体类
//设置表头和添加的数据字段
@Data
public class DemoData {
//设置表头名称,index为读操作时列的索引,从0开始
@ExcelProperty(value = "学生编号",index = 0)
private Integer sno;
//设置表头名称
@ExcelProperty(value = "学生姓名",index = 1)
private String sname;
}
进行写操作:
public static void main(String[] args) {
//实现写操作
//1.设置写入文件夹地址和excel文件名称
String filename = "D:\\write.xlsx";
//2.调用easyexcel里的方法实现写操作
//write方法的两个参数:第一个参数是:文件路径,第二个参数是:实体类的class
EasyExcel.write(filename,DemoData.class).sheet("数据列表").doWrite(TestEasyExcel.getData());
}
//创建方法返回list集合
public static List<DemoData> getData(){
List<DemoData> list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
DemoData demoData = new DemoData();
demoData.setSno(i);
demoData.setSname("测试"+i);
list.add(demoData);
}
return list;
}
3.写操作
创建实体类,使用index属性标记对应列的关系
//设置表头和添加的数据字段
@Data
public class DemoData {
//设置表头名称,index为读操作时列的索引,从0开始
@ExcelProperty(value = "学生编号",index = 0)
private Integer sno;
//设置表头名称
@ExcelProperty(value = "学生姓名",index = 1)
private String sname;
}
创建一个监听器,完成对每一行的读操作:
public class ExcelListener extends AnalysisEventListener<DemoData> {
/*一行一行的读取excel 中的内容,从第二行读取*/
@Override
public void invoke(DemoData demoData, AnalysisContext analysisContext) {
System.out.println("每一行的内容"+demoData);
}
/*读取表头中的内容*/
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头的内容为"+headMap);
}
/*读取完成之后执行的方法*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
使用EasyExcel进行读取
public class TestEasyExcel {
public static void main(String[] args) {
//1.设置写入文件夹地址和excel文件名称
String filename = "D:\\write.xlsx";
//2.实现读操作
//read方法的第一个参数时:读取的文件路径,第二个参数是:实体类的class,第三个参数是:监听器
EasyExcel.read(filename,DemoData.class,new ExcelListener()).sheet().doRead();
}
运行结果
表头的内容为{0=学生编号, 1=学生姓名}
每一行的内容DemoData(sno=0, sname=lucc0)
每一行的内容DemoData(sno=1, sname=lucc1)
每一行的内容DemoData(sno=2, sname=lucc2)
每一行的内容DemoData(sno=3, sname=lucc3)
每一行的内容DemoData(sno=4, sname=lucc4)
每一行的内容DemoData(sno=5, sname=lucc5)
每一行的内容DemoData(sno=6, sname=lucc6)
每一行的内容DemoData(sno=7, sname=lucc7)
每一行的内容DemoData(sno=8, sname=lucc8)
每一行的内容DemoData(sno=9, sname=lucc9)
更多推荐
已为社区贡献1条内容
所有评论(0)