使用apache POI读取XLSX文件。空例外

时间:2017-10-04 02:20:36

标签: java file xlsx

所以这是我现在拥有的代码版本。我在行

中得到一个空指针异常
wb = new XSSFWorkbook(inputStream);

我不知道如何解决它。输入流有数据,即使在输入流不为空的情况下,它也会引发异常。 任何帮助表示赞赏。

任何帮助表示赞赏。任何帮助表示赞赏。感谢任何帮助。感谢任何帮助。感谢任何帮助。感谢任何帮助。感谢任何帮助。感谢任何帮助。

public String randomAcessFile(int startPosition, int length, String filePath) {
        filePath = "133837_UBC_KP_F_2_tst.xlsx";
        String textFromFile = "";
        FileInputStream inputStream = null;
        try {
            inputStream = new FileInputStream(new File(filePath));
            if (filePath.endsWith("xlsx")) {
                /*
                 * try { workbook = new XSSFWorkbook(inputStream); textFromFile
                 * = readExcel(startPosition, length, workbook); } catch
                 * (IOException e) { System.out.println(e.getMessage());
                 * EdgarLogger.LOGGER.warning(e.getMessage()); }
                 */
                XSSFWorkbook wb = null;
                try {
                    wb = new XSSFWorkbook(inputStream);
                    XSSFSheet sheet = wb.getSheetAt(0);
                    XSSFRow row = null;
                    XSSFCell cell = null;
                    Iterator<Row> rows = sheet.rowIterator();
                    int rowIndex = -1;
                    while (rows.hasNext() && rowIndex != startPosition) {
                        row = (XSSFRow) rows.next();
                        rowIndex++;
                    }
                    if (rowIndex != startPosition || row == null) {
                        return "";
                    }
                    Iterator<Cell> cells = row.cellIterator();
                    int colIndex = -1;
                    while (cells.hasNext() && colIndex != length) {
                        cell = (XSSFCell) cells.next();
                        colIndex++;
                    }
                    if (colIndex != length || cell == null) {
                        return "";
                    }
                    if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
                        return cell.getStringCellValue() + " ";
                    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
                        return cell.getNumericCellValue() + " ";
                    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
                        return "" + cell.getBooleanCellValue();
                    } else {
                        return "";
                    }
                } catch (IOException e) {
                    EdgarLogger.LOGGER.warning(e.getMessage());
                }
                /*
                 * while (rows.hasNext()) { row = (XSSFRow) rows.next();
                 * Iterator cells = row.cellIterator(); while (cells.hasNext())
                 * { cell = (XSSFCell) cells.next();
                 * 
                 * if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
                 * System.out.print(cell.getStringCellValue() + " "); } else if
                 * (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
                 * System.out.print(cell.getNumericCellValue() + " "); } else {
                 * // U Can Handel Boolean, Formula, Errors } }
                 * System.out.println(); }
                 */
            } else if (filePath.endsWith("xls")) {
                HSSFWorkbook wb;
                try {
                    wb = new HSSFWorkbook(inputStream);
                    HSSFSheet sheet = wb.getSheetAt(0);
                    HSSFRow row = null;
                    HSSFCell cell = null;
                    Iterator<Row> rows = sheet.rowIterator();
                    int rowIndex = -1;
                    while (rows.hasNext() && rowIndex != startPosition) {
                        row = (HSSFRow) rows.next();
                        rowIndex++;
                    }
                    if (rowIndex != startPosition || row == null) {
                        return "";
                    }
                    Iterator<Cell> cells = row.cellIterator();
                    int colIndex = -1;
                    while (cells.hasNext() && colIndex != length) {
                        cell = (HSSFCell) cells.next();
                        colIndex++;
                    }
                    if (colIndex != length || cell == null) {
                        return "";
                    }
                    if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
                        return cell.getStringCellValue() + " ";
                    } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
                        return cell.getNumericCellValue() + " ";
                    } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
                        return "" + cell.getBooleanCellValue();
                    } else {
                        return "";
                    }
                } catch (IOException e) {
                    EdgarLogger.LOGGER.warning(e.getMessage());
                }
                /*
                 * int[] row_col = getRowCol(workbook); if (row_col[0] - 1 <
                 * startPosition || row_col[1] - 1 < length) { return ""; } Cell
                 * cell = workbook.getSheetAt(0).getRow(startPosition)
                 * .getCell(length); switch (cell.getCellType()) { case
                 * Cell.CELL_TYPE_STRING: return cell.getStringCellValue(); case
                 * Cell.CELL_TYPE_NUMERIC: return "" +
                 * cell.getNumericCellValue(); case Cell.CELL_TYPE_BOOLEAN:
                 * return "" + cell.getBooleanCellValue(); default: return ""; }
                 */
            } else {
                RandomAccessFile file;
                try {
                    file = new RandomAccessFile(filePath, "r");
                    try {
                        file.seek(startPosition);
                        byte[] bytes = new byte[length];
                        file.read(bytes);
                        file.close();
                        textFromFile = new String(bytes);
                    } catch (IOException e) {
                        EdgarLogger.LOGGER.warning(e.getMessage());
                    }
                } catch (FileNotFoundException e) {
                    EdgarLogger.LOGGER.warning(e.getMessage());
                }
            }
            try {
                inputStream.close();
            } catch (IOException e) {
                EdgarLogger.LOGGER.warning(e.getMessage());
            }
        } catch (FileNotFoundException e) {
            EdgarLogger.LOGGER.warning(e.getMessage());
        }
        return textFromFile;
    }

0 个答案:

没有答案