通过Alibaba的EasyExcel可以实现Excel的操作
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
写操作
//实体类
@Data
public class DemoData {
//表头1
@ExcelProperty("学生编码")
private int sno;
//表头2
@ExcelProperty("学生姓名")
private String sname;
@Override
public String toString(){
return "DemoData{"+"sno="+sno+",sname="+sname+ '\'' + '}';
}
}
-------------
//工具类
public class WriteTestEasyExcel {
public static void main(String[] args) {
//文件路径,不存在则创建,存在则追加
String fileName="D:\\\\33.xlsx";
//fileName文件路径,DemoData参数实体类,sheet表名
EasyExcel.write(fileName,DemoData.class).sheet("学生列表").doWrite(data());
}
//写操作,可批量写入
private static List<DemoData> data(){
List<DemoData> list=new ArrayList<DemoData>();
DemoData data=new DemoData();
data.setSno(i);
data.setSname("张三"+i);
list.add(data);
return list;
}
}
读操作
//实体类
@Data
public class ReadData {
//读取表头
@ExcelProperty(index = 0)
private int sid;
@ExcelProperty(index = 1)
private String sname;
@Override
public String toString(){
return "DemoData{"+"sno="+sid+",sname="+sname+ '\'' + '}';
}
}
---------
//读取监听器
public class ExcelListener extends AnalysisEventListener<ReadData> {
//最终数据
List<ReadData> list=new ArrayList<ReadData>();
//读取每一行excel
@Override
public void invoke(ReadData data, AnalysisContext analysisContext) {
System.out.println(data);
list.add(data);
}
//读取excel表头信息
@Override
public void invokeHeadMap(Map<Integer,String> headMap,AnalysisContext context){
System.out.println("*****"+headMap);
}
//读取完执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
----------
//读取操作
public class ReadTestEasyExcel {
public static void main(String[] args) {
//文件的全限路径
String fileName="D:\\\\11.xlsx";
EasyExcel.read(fileName,ReadData.class,new ExcelListener()).sheet().doRead();
}
}