java poi跳过单元格

时间:2016-09-16 22:12:34

标签: java excel apache-poi

这是我遍历我的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!

0 个答案:

没有答案