使用Java导入并获取Excel文件数据
1.先引入依赖
这里使用了easyexcel 官网: 在pom.xml里引入依赖。
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
2.读取文件
读取文件的方式有两种,首先是用监听器的方式读取。
首先先自定义一个类,类的属性要与表格中的行中要提取的属性对应上。
这里简单演示,只提取两个属性编号以及昵称。
@Data
public class XingQiuTableUserInfo {
@ExcelProperty("成员编号")
private String planetCode;
@ExcelProperty("成员昵称")
private String username;
}
构建好类后,开始构建监听器,invoke函数的作用是处理完文件中每一行数据后需要做的事情,而
doAfterAllAnalysed函数则用于所有数据都处理完后要做的事。样例里简单地输出了表格信息。
@Slf4j
public class TableListener implements ReadListener<XingQiuTableUserInfo> {
/**
* 这个每一条数据解析都会来调用
*
* @param data one row value. Is is same as {@link AnalysisContext#readRowHolder()}
* @param context
*/
@Override
public void invoke(XingQiuTableUserInfo data, AnalysisContext context) {
System.out.println(data);
}
/**
* 所有数据解析完成了 都会来调用
*
* @param context
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("已解析完成");
}
}
然后,再创建一个类来引入Excel文件。
public class ImportExcel {
public static void main(String[] args) {
//写法1
String fileName = "Excel文件地址";
EasyExcel.read(fileName,XingQiuTableUserInfo.class,new TableListener()).sheet().doRead();
}
}
测试运行
第二种方法则是不需要构建监听器,直接同步读取。
public static void synchronousRead(String fileName) {
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 同步读取会自动finish
List<XingQiuTableUserInfo> list = EasyExcel.read(fileName).head(XingQiuTableUserInfo.class).sheet().doReadSync();
for (XingQiuTableUserInfo data : list) {
System.out.println(data);
}
}
以上就是用Java调用EasyExcel库来处理excel文件的两种方式。