这是我遍历我的xls文件的方式:
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()){
Cell cell = cellIterator.next();
String cellValue="",cellComment=cell.getCellComment()!=null?cell.getCellComment().getString().toString().trim():"";
switch(cell.getCellType()){
case Cell.CELL_TYPE_BOOLEAN:
cellValue=(cell.getBooleanCellValue()+"").trim();
break;
case Cell.CELL_TYPE_NUMERIC:
cellValue=(cell.getNumericCellValue()+"").trim();
break;
case Cell.CELL_TYPE_STRING:
cellValue=(cell.getStringCellValue()+"").trim();
break;
case Cell.CELL_TYPE_FORMULA:
switch(cell.getCachedFormulaResultType()){
case Cell.CELL_TYPE_NUMERIC:
cellValue=(cell.getNumericCellValue()+"").trim();
break;
case Cell.CELL_TYPE_STRING:
cellValue=(cell.getStringCellValue()+"").trim();
break;
default:
try{cellValue=cell.toString().trim();}
catch(Exception ex){cellValue="";}
break;
}
break;
default:
try{cellValue=cell.toString().trim();}
catch(Exception ex){cellValue="";}
break;
}
...
}
}
某些单元格值被很好地提取出来,有些就像它们根本不存在一样。
我尝试了很多方法来提取细胞价值:
sheet.getRow(1).getCell(16).toString();
row.getCell(16).toString();
row.getCell(16).getStringCellValue();
但我总是失败!
有人可以解释为什么它发生在我身上! 它肯定不是因为编码coz一些非拉丁符号的细胞被很好地提取出来。
这是xls文件的链接,因此您可以自己查看http://best-shina.zp.ua/frontend/files/PRICE.xls 在这个文件中,col 13被跳过,就像它不存在一样,并且所有下一个cols都被移位并且它们的数字为n-1。 任何帮助appriciated!