java - Apache POI getStringCellValue() 打印 null

标签 java apache-poi

尝试通过 Java 中的 Apache POI 读取单元格值时遇到奇怪的错误:

 System.out.println(row.getCell(13, Row.CREATE_NULL_AS_BLANK).getStringCellValue()) 

始终打印 null,即使将 Missing 策略指定为 Row.CREATE_NULL_AS_BLANK 也是如此。我对单元格的写入逻辑是:

public void writeCell( String value, Sheet sheet, int rowNum, int colNum)
{
    Row row = sheet.getRow(rowNum);
    if (row == null)
    {
        row = sheet.createRow(rowNum);
    }
    Cell cell = row.createCell(colNum, Cell.CELL_TYPE_STRING);
    if (value == null)
    {
        return;
    }
    cell.setCellValue(value);
}

当我在 colNum = 13 处写入 Cell 时,字符串值对象为 null。我无法解决这个问题。

最佳答案

这行代码的作用与您想象的不同:

System.out.println(row.getCell(13, Row.CREATE_NULL_AS_BLANK).getStringCellValue()) 

实际上,就是这样

Cell cell = row.getCell(13);
if (cell == null) { cell = row.createCell(13, Cell.CELL_TYPE_BLANK); }

因此,如果该单元格中没有任何内容,则会将其创建为空的空白单元格

然后,你尝试这样做:

 cell.getStringCellValue()

这只适用于String单元格,在丢失的情况下,您已经告诉 POI 给您一个Blank新单元格!

如果您确实只想要单元格的字符串值,请使用 DataFormatter.formatCellValue(Cell) - 返回单元格的字符串表示形式,包括格式。否则,请在尝试获取值之前检查单元格的类型!

关于java - Apache POI getStringCellValue() 打印 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36777645/

相关文章:

java - 如何将excel表复制到同一个工作簿?

apache - 从 XWPF 文档(Apache POI)获取图像大小

java - 如何压缩 Java eclipse 项目以便轻松将其展开到另一台计算机上?

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'raj' in 'field list' at sun. 反射(reflect)

java - Selenium 中的数据提供者与 TestNG 不匹配

java - 在 Excel 中用相同的颜色填充整个工作表 - Apache POI

java - 无法写入 Excel (Selenium WebDriver) - Apache POI

java - (初学者)意外的类型错误

java - 无法在类中的两个数组之间使用相等运算符来模仿 ArrayList 的工作原理

java - 在代码 : First query returns 0 rows, 索引中创建 Couchbase View 在后台构建