java采用读写Excel表格
写入操作
-
加入阿里巴巴的第三方依赖`
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>`
这两个依赖的版本号必须对应起来,对应版本自行在网上查看
2.创建ExcelData类,属性对应Excle表格的表头字段
package com.atguigu;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class DataExcel {
//value为表头内容,index为第几列
@ExcelProperty(value = "学生编号",index = 0)
private String fri;
@ExcelProperty(value = "学生姓名",index = 1)
private String son;
}
3.创建主类进行写
package com.atguigu;
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class ExeclUitl {
public static void main(String[] args) {
String file="D:\\1.xlsx";
/*DataExcel是对应的实体
file是文件路劲,没有就创建
sheel为表格的名称
doWrite()
参数是List<实体>
*/
EasyExcel.write(file,DataExcel.class).sheet("学生信息").doWrite(getList());
}
private static List<DataExcel> getList(){
ArrayList<DataExcel> dataExcels = new ArrayList<DataExcel>();
for (int i = 0; i < 5; i++) {
DataExcel dataExcel = new DataExcel();
dataExcel.setFri("第一行"+i);
dataExcel.setSon("liming");
dataExcels.add(dataExcel);
}
return dataExcels;
}
}
控制台输出Finished write证明写入成功
读取Excel中内容
创建一个ExcelListener继承AnalysisEventListener类重写里面的方法
package com.atguigu.eduservice;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.atguigu.DataExcel;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener<DataExcel>{
/**
*
* @param dataExcel Excel文件对应的实体类
* @param analysisContext 监听器
* 一行一行去读取excle内容
*/
//创建list集合封装最终的数据
List<DataExcel> list = new ArrayList<>();
@Override
public void invoke(DataExcel dataExcel, AnalysisContext analysisContext) {
System.out.println("***"+dataExcel);
list.add(dataExcel);
}
//读取excel表头信息
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头信息:"+headMap);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
在主类调用该监听器的方法
public static void main(String[] args) throws Exception {
// 写法1:
String fileName = "F:\\01.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(fileName, DataExcel.class, new ExcelListener()).sheet().doRead();
// 写法2:
InputStream in = new BufferedInputStream(new FileInputStream("F:\\01.xlsx"));
ExcelReader excelReader = EasyExcel.read(in, DataExcel.class, new ExcelListener()).build();
ReadSheet readSheet = EasyExcel.readSheet(0).build();
excelReader.read(readSheet);
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
excelReader.finish();
}
结果