我正在使用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列)的每个单元格中写了相同的值,但问题仍然相同。
什么可能导致这个问题?
答案 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可以解决问题。