POI说Cell是空的,但是cell有一个值

时间:2012-10-15 09:22:37

标签: java excel apache-poi

我正在使用POI在我的Java应用程序中打开Excel(xls)文件。 这个Excelfile有30行。 我需要在ColumnIndex 9中获取Value。

我的代码:

Workbook wb;
wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
for (Row row : sheet) {
    if (row.getLastCellNum() >= 6) {
        for (Cell cell : row) {
             if(cell.getColumnIndex == 9) {
                 //do something
              }
         }
     }
}

Excel中的每一行都包含第1-14列中的值。 我的问题是,只有一些值被识别。我在ColumnIndex 9(Excel表格中的第10列)的每个单元格中写了相同的值,但问题仍然相同。

什么可能导致这个问题?

3 个答案:

答案 0 :(得分:0)

确保为列中的所有单元格设置相同的日期格式(选择列并设置格式明确)我相信使用DataUtil class获取数据比调用cell.getDateCellValue()更合适。

答案 1 :(得分:0)

POI使用基于0的列计数。所以,如果你想要第9列,你需要获取索引为8而不是9的单元格。看起来你正在检查索引为9的列,所以是一列。

如果您不确定基于0的索引,那么最安全的方法是使用CellReference类来帮助您。这将在Excel样式引用(例如A1)和基于POI样式0的偏移(例如0,0)之间进行转换。使用类似的东西:

CellReference ref = new CellReference("I10");
Row r = sheet.getRow(ref.getRow());
if (r == null) {
    // That row is empty
} else {
    Cell c = r.getCell(ref.getCol());
    // c is now the cell at I10
}

答案 2 :(得分:0)

似乎是excel文档的问题。

将它们转换为csv然后再转换回xls可以解决问题。