本文主要是介绍解决EasyPoi导入Excel获取不到第一列的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 复现错误
- 2. 分析错误
- 2.1 导入的代码
- 2.2 DictExcel实体类
- 2.2 表头和标题
- 3. 解决问题
1. 复现错误
使用EasyPoi
导入数据时,Excel
表格如下图:
但在导入时,出现如下错误:
name
为英文名称,在第一列,Excel
表格有值,但导入的代码中为null
,就很奇怪?
2. 分析错误
2.1 导入的代码
因涉及公司代码,暂时就不贴出全部代码,只贴出部分问题的代码:
@Overridepublic void importExcel(WorkspaceUser user, MultipartFile file, Boolean coverFlag) {try {//【1】首先判断是不是空的文件if (file.isEmpty()) {throw new RuntimeException(IMPORT_EMPTY);}//【2】检查文件格式...//【3】设置EasyPoi参数ImportParams params = new ImportParams();//【3.1】设置标题params.setTitleRows(0);//【3.2】设置表头params.setHeadRows(2);//【3.3】导入数据List<DictExcel> dictExcels = ExcelImportUtil.importExcel(file.getInputStream(), DictExcel.class, params);//【4】检查是否存在导入数据......//【5】检查是否存在数据问题......} catch (Exception e) {log.error("error on import test excel", e);throw new RuntimeException(e);}}
2.2 DictExcel实体类
@Data
@ExcelTarget("dictExcel")
public class DictExcel {@Excel(name = "*英文缩写")private String abbreviation;@Excel(name = "英文名称")private String name;@Excel(name = "*中文名称")private String cnName;@Excel(name = "描述")private String description;
}
2.2 表头和标题
以上代码咋一看没有问题,进而分析Excel
的表头和标题:
在有标题时,titleRows设置1,如果没有,设置 0 或者不设置(默认是0)。
因而,上述代码:
-
params.setTitleRows(0);
不对,应该是params.setTitleRows(1);
,标题设置一行 -
params.setHeadRows(2);
不对,应该是params.setHeadRows(1);
,表头设置一行
3. 解决问题
-
将
params.setTitleRows(0);
修改为是params.setTitleRows(1);
,即标题设置一行 -
将
params.setHeadRows(2);
修改为params.setHeadRows(1);
,即表头设置一行
//省略代码......
ImportParams params = new ImportParams();
//标题设置一行
params.setTitleRows(1);
//表头设置一行
params.setHeadRows(1);
//省略代码......
重新导入数据:
这篇关于解决EasyPoi导入Excel获取不到第一列的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!