6
Q
[alibaba/easyexcel]实体类解析bug
A
回答
7
你这代码太少了,我用这个字段测试了,没发现问题;
package com.test.excel.model;
import com.alibaba.excel.annotation.ExcelProperty;
//实体类
public class TestModel {
@ExcelProperty("版本")
private String fVersionId;
public String getfVersionId() {
return fVersionId;
}
public void setfVersionId(String fVersionId) {
this.fVersionId = fVersionId;
}
}
package com.test.excel;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.test.excel.model.TestModel;
import java.io.File;
public class ExcelTest {
public static void main(String[] args) {
String fileName = "C:\\Users\\Desktop\\temp\\test.xlsx";
EasyExcel.read(fileName, TestModel.class, new DemoDataListener()).sheet().doRead();
}
public static class DemoDataListener extends AnalysisEventListener<TestModel>{
@Override
public void invoke(TestModel data, AnalysisContext context) {
System.out.println(data.getfVersionId());
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}
}
这个是示例代码,读到的字段可以打印出来.
7
建议改成驼峰 后续版本会支持非驼峰
7
主要问题是这个bug是偶发,所以才来提bug,当时我都读取到了数据,,在实体里面也设置好了对应excel的关系,结果读取excel的数据是{1=xxx,2=xxxx,3=xxxxx....}这个样子,然而我的实体根本命名不可能这样命名的, @ExcelProperty("版本") private String fVersionId;第一版我就是这样写的,读取不到值,然后我尝试了很久,一直想不明白为什么会这样,然后就一直调试,一直调试,直到最后,我把字段改成了versionId,这个样子才通过测试...
建议改成驼峰后续版本会支持非驼峰
5
你这代码太少了,我用这个分段测试了,没发现问题;
包 com.test.excel.model ; 导入 com.alibaba.excel.annotation.ExcelProperty ; //实体类 public class TestModel { @ExcelProperty(“版本”) 私有 字符串fVersionId; public String getfVersionId(){ return fVersionId; } public void setfVersionId(String fVersionId){ 此。fVersionId = fVersionId; } }
包 com.test.excel ; 导入 com.alibaba.excel.EasyExcel ; 导入 com.alibaba.excel.context.AnalysisContext ; 导入 com.alibaba.excel.event.AnalysisEventListener ; 导入 com.test.excel.model.TestModel ; 导入 java.io.File ; 公共 类 ExcelTest { public static void main(String [] args){ String fileName = “ C:\\用户\\桌面\\临时\\ test.xlsx ”; EasyExcel 。读(文件名,TestModel 。类,新 DemoDataListener()) 。sheet()。doRead(); } 公共 静态 类 DemoDataListener 扩展了 AnalysisEventListener < TestModel > { @覆盖 公共 空隙 调用(TestModel 数据,AnalysisContext 上下文){ 系统。出来。的println(数据。 getfVersionId()); } @覆盖 公共 空隙 doAfterAllAnalysed(AnalysisContext 上下文){ } } }
这个是示例代码,读到的细分可以打印出来。
你难道没有读出来excel的值为1=xxx,2 =xxxx ,3=xxxx 实体的值为fVersionId = null;
9
你这代码太少了,我用这个分段测试了,没发现问题;
包 com.test.excel.model ; 导入 com.alibaba.excel.annotation.ExcelProperty ; //实体类 public class TestModel { @ExcelProperty(“版本”) 私有 字符串fVersionId; public String getfVersionId(){ return fVersionId; } public void setfVersionId(String fVersionId){ 此。fVersionId = fVersionId; } }
包 com.test.excel ; 导入 com.alibaba.excel.EasyExcel ; 导入 com.alibaba.excel.context.AnalysisContext ; 导入 com.alibaba.excel.event.AnalysisEventListener ; 导入 com.test.excel.model.TestModel ; 导入 java.io.File ; 公共 类 ExcelTest { public static void main(String [] args){ String fileName = “ C:\\用户\\桌面\\临时\\ test.xlsx ”; EasyExcel 。读(文件名,TestModel 。类,新 DemoDataListener()) 。sheet()。doRead(); } 公共 静态 类 DemoDataListener 扩展了 AnalysisEventListener < TestModel > { @覆盖 公共 空隙 调用(TestModel 数据,AnalysisContext 上下文){ 系统。出来。的println(数据。 getfVersionId()); } @覆盖 公共 空隙 doAfterAllAnalysed(AnalysisContext 上下文){ } } }
这个是示例代码,读到的细分可以打印出来。
你难道没有读出来excel的值为1=xxx,2 =xxxx ,3=xxxx 实体的值为fVersionId = null;
没遇到过,我执行了很多次代码,都读取的是正确的值