您的位置:首页 > 编程语言 > Java开发

easyExcel极速快速简单入门 1分钟入门 Java Springboot

2020-07-25 12:15 393 查看

依赖

[code]<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>

写操作:

写出这样一个excel

1.编写一个写入类

[code]package com.xjh.eduservice.entity.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//lombok注释 可以getter setter toString代替
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExcelWriteSubject {

//每行的数据是一个对象 需要每列的表头
//设置表头名称
@ExcelProperty("一级分类")
private String oneSubject;

//设置表头名称
@ExcelProperty("二级分类")
private String twoSubject;

}

excel里每一行看做一个对象   改行的每一列数据的表头用

[code]@ExcelProperty注解设置

2.方法:获得一个装满每行数据的列表

[code]public static List<ExcelWriteSubject> excelWrite(){
List<ExcelWriteSubject> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
ExcelWriteSubject data = new ExcelWriteSubject();
data.setOneSubject("前端");
data.setTwoSubject("ccccc+++++");
list.add(data);
}
return list;
}

写入 

[code]//写方法
public static void main(String[] args) throws Exception {
String fileName = "F:\\11.xlsx";
//参数 文件名 每行内容的类 下面的sheet名 类的列表数据
EasyExcel.write(fileName, ExcelWriteSubject.class)
.sheet("写入方法一").doWrite(excelWrite());
}
[code]write方法 参数分别是 1.文件名 2.写入内容的类

sheet代表表格下面显示的sheet

dowriter 传入list集合

 

读操作:

1.创建读类

[code]package com.xjh.eduservice.entity.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExcelReadSubject {
//设置列对应的属性
@ExcelProperty(index = 0)
private String oneSubject;

//设置列对应的属性
@ExcelProperty(index = 1)
private String twoSubject;

}
[code]index = 0代表第一列的数据
[code]index = 1代表第二列 以此类推

2.读方法需要写Listener监听器

[code]package com.xjh.eduservice.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import com.xjh.eduservice.entity.vo.ExcelReadSubject;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

//创建读取excel监听器
public class ExcelListener extends AnalysisEventListener<ExcelReadSubject> {

//创建list集合封装最终的数据
List<ExcelReadSubject> list = new ArrayList<>();

//一行一行去读取excle内容
@Override
public void invoke(ExcelReadSubject subject, AnalysisContext analysisContext) {
System.out.println("***"+subject);
list.add(subject);
}

//读取excel表头信息
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头信息:"+headMap);
}

//读取完成后执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}

3.读取方法

[code] //读
public static void main(String[] args) throws Exception {
String fileName = "F:\\11.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(fileName, ExcelReadSubject.class, new ExcelListener()).sheet().doRead();
}

sheet表示读取哪个sheet

 

 

 

 

上面是本地

--------------------------------------------

网络流

[code] try {
EasyExcel.read(file.getInputStream(),ExcelReadSubject.class,
new ExcelListener(eduSubjectService)).sheet().doRead();
} catch (IOException e) {
e.printStackTrace();
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: