所以这是我现在拥有的代码版本。我在行
中得到一个空指针异常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;
}