You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中ArrayList空值处理:MySQL查询结果写入Excel报空指针异常

解决Apache POI写入Excel时因ArrayList空值导致的NullPointerException问题

我来帮你搞定这个问题——你遇到的NullPointerException根源非常明确:当response列表里的元素是null时,你直接调用了response.get(j).toString(),而null对象根本没有toString()方法,自然会触发空指针异常。另外你的循环还有个小bug,咱们一起修正。

问题分析

你的response列表包含null值(来自数据库中lastresponse字段的空值),但写入Excel时没有做任何空值判断,直接执行response.get(j).toString(),这就是报错的核心原因。同时原循环的条件j <= response.size()会导致IndexOutOfBoundsException,因为列表的索引范围是0到size()-1,当j等于size()时,response.get(j)会越界。

解决方案

根据你的需求,提供两种实现方式:

方案1:在对应单元格插入空值

修改写入Excel的代码,先判断元素是否为null,同时修正循环边界和行不存在的潜在问题:

for (int j = 0; j < response.size(); j++) {
    // 先检查行是否存在,不存在则创建
    row = sheet.getRow(j + 2);
    if (row == null) {
        row = sheet.createRow(j + 2);
    }
    cell = row.createCell(1);
    Date date = response.get(j);
    if (date == null) {
        // 设置单元格为空字符串
        cell.setCellValue("");
    } else {
        // 非空则转换为字符串写入
        cell.setCellValue(date.toString());
    }
}

方案2:用横线(Hyphen)替代null值

如果需要用-代替空值,只需要把方案1中的cell.setCellValue("");替换成cell.setCellValue("-");即可:

if (date == null) {
    // 用横线替代null
    cell.setCellValue("-");
} else {
    cell.setCellValue(date.toString());
}

额外提示

从ResultSet读取数据的代码是没问题的——ResultSet.getDate("lastresponse")在数据库字段为空时会返回null,这是正常的行为,不需要修改。

内容的提问来源于stack exchange,提问作者Prabu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:50:51