在Apache POI

时间:2017-10-20 23:59:50

标签: java excel apache-poi

我正在编写一个使用excel文件的程序。 在这种方法中,我想迭代" I" excel中的列(我将其命名为COLUMN_MINUTE并使用。convertColStringToIndex()以便我可以更轻松地使用该程序)并找到大于int minute参数的数字的第一次出现。 但是,这会返回一个Null指针异常。

XSFFSheet初始化如下:

 File excelFile = new File ("C:\\Users\\vidon\\Desktop\\myFile.xlsx");
    FileInputStream inputStream = null;
    try {
        inputStream = new FileInputStream (excelFile);


        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
        XSSFSheet sheet = workbook.getSheet(SHEET_NAME);
        int minuteEndsOnRow = 0;
        try {
            minuteEndsOnRow = getRowWithMinute (sheet, minute); //change here
        } catch (Exception ex) {
            Logger.getLogger(ExcelReader.class.getName()).log(Level.SEVERE, null, ex);
        }

                                 (....)

    } catch (IOException e) {
        e.printStackTrace();
    }
    finally {
        try {
            if (inputStream != null) {
                inputStream.close();
            }
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }
    }

虽然方法本身看起来像这样。

public int getRowWithMinute (XSSFSheet sheet, int minute) throws Exception {
    int cellValue = -1;
    int row = 1; 
    XSSFCell cell;
    for (row=1; cellValue < minute; row++) {
         cell = sheet.getRow(row).getCell(CellReference.convertColStringToIndex(COLUMN_MINUTE));
        switch (cell.getCellTypeEnum()) {
            case NUMERIC:
                cellValue = (int) cell.getNumericCellValue();
                break;
            case STRING:
                String cv = (String) cell.getStringCellValue();
                cellValue = Integer.valueOf(cv);
                break;
            default:
                throw new Exception ("CellValue is not numeric or string.");
        }

    }

    return row;
}

导致异常的原因是什么?

STACK TRACE:`

  

INFO:打开连接[connectionId {localValue:6,serverValue:20}]到127.0.0.1:27017   2017年10月21日上午3:15:56 utils.ExcelReader readExcel   SEVERE:null java.lang.NullPointerException at   utils.ExcelReader.getRowWithMinute(ExcelReader.java:203)at   utils.ExcelReader.readExcel(ExcelReader.java:76)at   utils.StatisticsJSONBuilder.updateData(StatisticsJSONBuilder.java:199)     在JsonBuilderTest.main(JsonBuilderTest.java:46)

ExcelReader.java:203是我定义的行

cell = sheet.getRow(row).getCell(CellReference.convertColStringToIndex(COLUMN_MINUTE));

0 个答案:

没有答案