0

空のセルを見つけたときに文字列の値に追加するような方法でExcelファイルを解析しようとしています。サンプルコード:

for (int e = 0; e < wb.getNumberOfSheets(); e++) {
    sheet = wb.getSheetAt(e);
    for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum(); i++) {
        System.out.println(sheet.getSheetName());
        row = sheet.getRow(i);
        if(row != null) {
            cell = row.getCell(0, Row.RETURN_BLANK_AS_NULL);
            if(cell.getCellType() != Cell.CELL_TYPE_BLANK) {
                cell = row.createCell(i);
                cell.setCellValue("foo");
            }
            cell = row.getCell(1, Row.RETURN_BLANK_AS_NULL);
            if(cell == null) {
                cell = row.createCell(i);
                cell.setCellValue("bar");
            }
            cell = row.getCell(2, Row.RETURN_BLANK_AS_NULL);
            if(cell == null) {
                cell = row.createCell(i);
                cell.setCellValue(0.0);
            }
        }
}

多くの解決策を試しましたが、常に例外NullPointerExceptionが発生します。

4

2 に答える 2

1

どの行で例外が発生するかを知るのに役立つ場合がありますが、それは次の行だと思います。

cell = row.getCell(0, Row.RETURN_BLANK_AS_NULL);
if(cell.getCellType() != Cell.CELL_TYPE_BLANK) {

私の知る限り、セルが空の場合、ポリシー RETURN_BLANK_AS_NULLは null 値を返します。そのため、そこに空白のセルがあるとcell.getCellType()、if ステートメントで NullPointerException が発生します。

于 2012-12-21T14:00:20.893 に答える
0

最初のチェックで NPE があり、セルが null です:

cell = row.getCell(0, Row.RETURN_BLANK_AS_NULL);
if(cell.getCellType() != Cell.CELL_TYPE_BLANK) {

後で正しくチェックします:

cell = row.getCell(2, Row.RETURN_BLANK_AS_NULL);
if(cell == null) {

新しい細胞の用途を創造する

Row.CREATE_NULL_AS_BLANK
于 2012-12-21T14:00:26.900 に答える