easyexcel异常类_Java EasyExcel读取Excel数据转换等异常处理示例代码

1、异常处理代码

在监听器中重写一下onException方法即可。/**

* 在转换异常 获取其他异常下会调用本接口。抛出异常则停止读取。如果这里不抛出异常则 继续读取下一行。

*

* @param exception

* @param context

* @throws Exception

*/

@Override

public void onException(Exception exception, AnalysisContext context) {

LOGGER.error("解析失败,但是继续解析下一行:{}", exception.getMessage());

// 如果是某一个单元格的转换异常 能获取到具体行号

// 如果要获取头的信息 配合invokeHeadMap使用

if (exception instanceof ExcelDataConvertException) {

ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;

LOGGER.error("第{}行,第{}列解析异常", excelDataConvertException.getRowIndex(),

excelDataConvertException.getColumnIndex());

}

}

监听器的完整代码:// 有个很重要的点 DemoExceptionListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用阿里巴巴的 EasyExcel读取 Excel转换为 List<Map> 的示例代码: ```java // 定义 Excel 文件路径 String filePath = "example.xlsx"; // 定义 Excel 表格中数据开始行数(从0开始计数) int startRow = 1; // 定义 Excel 表格中数据的列信息(key为列名,value为该列对应的 Java 对象属性名) Map<String, String> columnMap = new HashMap<>(); columnMap.put("姓名", "name"); columnMap.put("年龄", "age"); columnMap.put("性别", "gender"); // 使用 EasyExcel 读取 Excel 并将数据转换为 List<Map> 结构 List<Map<String, Object>> dataList = new ArrayList<>(); EasyExcel.read(filePath, new ExcelListener(dataList, columnMap)) .sheet() .headRowNumber(startRow) .doRead(); ``` 其中,`ExcelListener` 是一个实现了 EasyExcel 的 `AnalysisEventListener` 接口的类,用于读取 Excel 数据并将其转换为 Map 结构。以下是 `ExcelListener` 类的示例代码: ```java public class ExcelListener extends AnalysisEventListener<Map<Integer, String>> { private List<Map<String, Object>> dataList; private Map<String, String> columnMap; public ExcelListener(List<Map<String, Object>> dataList, Map<String, String> columnMap) { this.dataList = dataList; this.columnMap = columnMap; } @Override public void invoke(Map<Integer, String> rowData, AnalysisContext context) { // 将 Excel数据转换为 Map 结构 Map<String, Object> dataMap = new HashMap<>(); for (Map.Entry<Integer, String> entry : rowData.entrySet()) { String columnName = context.readSheetHolder().getCellDataList().get(entry.getKey()).getStringValue(); String propertyName = columnMap.get(columnName); if (StringUtils.isNotEmpty(propertyName)) { dataMap.put(propertyName, entry.getValue()); } } // 将 Map 结构的数据添加到列表中 dataList.add(dataMap); } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 数据解析结束后的处理 } } ``` 在上面的代码中,`invoke` 方法会在每读取一行 Excel 数据时被调用。在该方法中,我们需要将 Excel 数据转换为 Map 结构,并将其添加到 `dataList` 列表中。最终,`dataList` 列表中的数据就是以 List<Map> 结构存储的 Excel 数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值