我正在尝试读取一行中的一些单元格,前5页使用相同的读取代码是可以的,但是我的第6张表格在特定单元格中返回空值,即使单元格在电子表格中有值。 / p>
有没有人见过这个?怎么解决?
提前致谢!
PS:这是我用来获取值的代码,工作正常,直到达到第6张。我可以看到Excel电子表格已填满但仍然为空。
private String getValorTexto(HSSFSheet sheet, int indiceLinha, int indiceColuna)
{
sheet.getRow(indiceLinha).getCell(indiceColuna).setCellType(HSSFCell.CELL_TYPE_STRING);
if (sheet.getRow(indiceLinha).getCell(indiceColuna).getCellType() == HSSFCell.CELL_TYPE_STRING) {
return sheet.getRow(indiceLinha).getCell(indiceColuna).getStringCellValue().trim();
} else {
return String.valueOf(sheet.getRow(indiceLinha).getCell(indiceColuna).getNumericCellValue());
}
}
答案 0 :(得分:2)
我想强制单元格类型为HSSFCell.CELL_TYPE_STRING可能是获取null的原因。
从任何类型的单元格(您可能还有日期,公式等)获取字符串值的更健壮的方法是使用DataFormatter:
import org.apache.poi.ss.usermodel.DataFormatter;
static DataFormatter dataFormatter = new DataFormatter();
static String getStringValue(Cell cell) {
return dataFormatter.formatCellValue(cell);
}
当您希望获得与Excel中显示的内容完全相同时(例如舍入到给定小数位的数字),它尤其有用。
答案 1 :(得分:0)
我在最近的测试中发现,由于未知原因,方法DateUtil.GetJavaDate(Double value)可以引发NullReferenceException。这是NPOI在调用cell.DateCellValue()时用于转换数字Excel日期的方法。我建议改用DateTime.FromOADate(cell.NumericCellValue)方法,该方法似乎执行相同的转换。