引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
<!--xls-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!--xlsx-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
1.使用EasyExcel进行写操作
(1).创建一个要写入的实体类
@Data
public class Student {
// 设置excel表头的名称
@ExcelProperty("学生编号")
private Integer no;
@ExcelProperty("学生姓名")
private String name;
}
(2).创建一个操作Excel的实体类
public class TestEasyExcel {
public static void main(String[] args) {
// 实现excel写的操作
// 1.设置写入文件夹地址和excel文件名称
String filename = "C:\\write.xlsx";
// 2.调用easyExcel里面的方法实现写操作
// write方法的两个参数:第一个为文件路径 第二个为实体类class
EasyExcel.write(filename, Student.class)
// Sheet的名称
.sheet("学生列表")
// 把数据写入Excel表格中
.doWrite(getData());
}
// 创建方法返回list集合(具体要写入Excel的数据)
private static List<Student> getData() {
List<Student> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Student data = new Student();
data.setSno(i);
data.setSname("lucy" + i);
list.add(data);
}
return list;
}
}
2.使用EasyExcel进行读操作
(1).创建一个和Excel对应的实体类,标记对应列关系
@Data
public class Student {
// 设置excel表头的名称
@ExcelProperty(value = "学生编号", index = 0)
private Integer no;
@ExcelProperty(value = "学生姓名", index = 1)
private String name;
}
(2).创建读取Excel监听器
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.CellData;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener<Student> {
/**
* 一行一行读取excel内容
* @param data 一行一行读取数据
* @param analysisContext
*/
@Override
public void invoke(Student data, AnalysisContext analysisContext) {
System.out.println("*****" + data);
}
/**
* 读取表头内容
* @param headMap
* @param context
*/
@Override
public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
System.out.println("表头:" + headMap);
}
/**
* 读取完成之后
* @param analysisContext
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) { }
}
(3).调用实现最终的读取
import com.alibaba.excel.EasyExcel;
public class TestEasyExcel {
public static void main(String[] args) {
// 实现Excel读操作,这里表示要读取的Excel文件的路径
String filename = "C:\\write.xlsx";
// read的三个参数:要读取的Excel文件路径 和Excel对应的实体类 监听器
EasyExcel.read(filename, Student.class, new ExcelListener())
.sheet()
.doRead();
}
}