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

Apache POI创建xls文件调用Sheet.getRow报空指针异常问题求助

问题根因

你怀疑的general为null不成立,HSSFWorkbook.createSheet()执行成功后必然返回有效的Sheet实例,空指针的触发源是general.getRow(0)返回null:新创建的工作表中不存在任何行,getRow()只会读取已经创建过的行,未创建的行调用会返回null,后续调用row.getCell()就会触发空指针。

解决方案

  • 读取行前先判断行是否存在,不存在的话先调用createRow()创建对应行
  • 读取单元格前同样判断单元格是否存在,不存在则调用createCell()创建对应单元格
  • 如果是要给空白单元格赋值,优先直接创建行和单元格,不需要先走get逻辑

修正后代码示例

兼容已存在行/单元格的通用写法

Workbook wb = new HSSFWorkbook();
Sheet general=wb.createSheet("General"); 

// 先判断行是否存在,不存在则创建
Row row = general.getRow(0);
if (row == null) {
    row = general.createRow(0);
}
// 先判断单元格是否存在,不存在则创建
Cell cell = row.getCell(1);
if (cell == null) {
    cell = row.createCell(1);
}
// 后续即可正常给cell设置值
cell.setCellValue("需要填入的内容");

全新空白文件的简化写法

如果确认是全新创建的xls文件,对应行和单元格肯定不存在,可以直接创建不需要判断:

Workbook wb = new HSSFWorkbook();
Sheet general=wb.createSheet("General"); 
Row row = general.createRow(0);    
Cell cell = row.createCell(1);  
cell.setCellValue("需要填入的内容");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:57:01