【问题标题】:sheet gives me null pointer apache poi表给了我空指针apache poi
【发布时间】:2021-12-18 16:12:00
【问题描述】:

我想创建一个文件 .xls,但是当我设置一个值时,它给了我空指针。这是我的代码:

(文件 xls 在开始时是空的,我需要从代码中创建两张表):

Workbook wb = new HSSFWorkbook();
       Sheet general=wb.createSheet("General"); 
    
    //after this line it gives me null point
                Row row = general.getRow(0);    
                Cell cell = row.getCell(1);   

好像“general”是空的。有谁能帮帮我吗?

【问题讨论】:

标签: java apache-poi xls


【解决方案1】:

getRow(0) 抛出异常,因为第 0 行不存在。 您需要首先创建行:

Row row = general.createRow(0);

【讨论】:

  • Sheet.getRow 不会抛出异常。如果该行不存在,则返回 null。所以rownull 然后row.getCell 抛出NPE
【解决方案2】:

Row row = general.getRow(0) 会给你 null 因为该行不存在。只有使用 general.createRow(0) 创建后,才能使用它。因此,一旦创建了 0 处的 rwo,如果您调用 getRow(0),它将返回该行。并且只有非空行可以有一个单元格。

您可以创建自己的 util 方法,如下所示,如果未创建,可以使用该方法获取行。

public Row getRow(Sheet sheet, int rowNo)
{
    Row row = sheet.getRow(rowNo);
    if(row == null)
    {
        row = sheet.createRow(rowNo);
    }
    return row;
}

row.getCell 也会面临类似的问题。它应该首先创建单元格。或者你可以使用它。

Cell cell = row.getCell(0, Row.RETURN_BLANK_AS_NULL);

【讨论】:

  • CellUtil 已经拥有这些实用方法。
  • 哦,太好了。谢谢(你的)信息。 :)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多