0

空白になるまで、値の列を繰り返し処理しています。列全体を収集して保存する必要があり、他の値は必要ありません。空白、null、0、""、および CELL_TYPE_BLANK (int = 3) を確認しようとしましたが、null ポインター例外を回避するために取得できません。コード スニペットとエラーを以下に示します。私に何ができる?これはメソッドまたはプログラム全体ではなく、関連する部分です。

String s = list[i];
//find the directory from the list array to locate the file
InputStream input = new FileInputStream(s);
//create a new workbook object to hold the excel file
Workbook wb = new XSSFWorkbook(input);
//create an arbitrary starting location
int column = 2; //absolutely the correct number
int rownum = 10;
//get the value from the first sheet
org.apache.poi.ss.usermodel.Sheet insheet = wb.getSheetAt(0);       
//of the second columm
Row row = insheet.getRow(rownum);
//in the 11th row (arbitrary number used to reduce iterations and skip whitespace)
Cell cell = row.getCell(column); 
System.out.println("Skimming sheet: " + insheet.getSheetName());
//iterate until the very end of the column is found
System.out.println("Cell value B" + (rownum-1) +  ": " + cell);

//3 denotes CELL_TYPE_BLANK
while (cell.getCellType() != 3 ) {
    //go to the next location
    //update to the next cell
    System.out.println("Cell value B" + rownum +  ": " + cell);
    row = insheet.getRow(rownum);
    if(row.getCell(column).getCellType() != 3){
        cell = row.getCell(column); //error occurs here, line 241
    }
    rownum++;
}


Exception in thread "main" java.lang.NullPointerException
    at FileTest.skim(FileTest.java:241)
    at FileTest.main(FileTest.java:121)
4

2 に答える 2

2

アクセスしようとしている行がセルではなくnullであるため、エラーが発生します。Apache POI Iteratorの例を見てみたいと思います。

//taken from the example
Sheet sheet = wb.getsheetat(0);
for (Iterator<Row> rit = sheet.rowiterator(); rit.hasnext(); ) {
    Row row = rit.next();
    //now, based in your needs
    Cell cell = row.getCell(column);
    //do what you need with the row-column
}
于 2012-05-06T18:40:04.400 に答える
0

for ループで最後の行まで行を繰り返します。これにより、その例外が発生するのを防ぐことができます。

 for(int i =0 ; i< insheet.getLastRowNum(); i++){
//do stuff
}
于 2012-05-06T18:41:47.457 に答える