JAVA试图从excel表中获取记录

时间:2014-12-27 14:57:15

标签: java excel

public class sample {
    private static Workbook workbook;

    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("C://Users//chakku//Desktop//ch//updated/TestReport Lang Funda1.xls");

            workbook = new HSSFWorkbook(fis);

            Sheet sh = workbook.getSheetAt(0);

            for(int i=0;i<=sh.getLastRowNum();i++) {
                int z=i+1;
                Cell cell = sh.getRow(z).getCell(1);
                if(Cell.CELL_TYPE_BLANK == cell.getCellType()) {
                    System.out.println("3");
                }else {
                    System.out.println(cell.getRichStringCellValue());
                }
            }
        }catch(FileNotFoundException ex) {
            ex.printStackTrace();
        }catch(IOException ex) {
            ex.printStackTrace();
        }  
    } 
}

我不知道什么是错的,但最后在获取所有记录时它会打印NullPointerException

2 个答案:

答案 0 :(得分:0)

构建访问索引时出错 - 请使用:

 for(int z= 1;z<=sh.getLastRowNum();z++) {

答案 1 :(得分:0)

如果说你只有两行,那么sh.getLastRowNum()将返回一个(因为它从0开始计数),你将尝试访问它,如

for(int i=0;i<=sh.getLastRowNum();i++) {
    int z=i+1;
    Cell cell = sh.getRow(z).getCell(1);

因此,对于i = 1,您正在访问第二行(sh.getRow(2)),它不存在,因为您应该从第0行开始。您应该执行以下操作:

for(int i=0;i<=sh.getLastRowNum();i++) {
    Cell cell = sh.getRow(z).getCell(1);