У меня есть еще одна проблема с моим кодом. У меня есть ошибка Исключение из темы "main" java.lang.NullPointerExceptionПроблема с нулевым указателем в POI
, который, как я понимаю, является вопросом инициализации. Однако я не знаю, как инициализировать объект «строка» HSSFRow (netbean говорит, что «строка» должна быть инициализирована).
Строка ошибки - это 10-я строка перед циклом «для». когда я запускаю код с целым значением, равным 4 для переменной «cols», все в порядке.
здесь сводном код
try{
InputStream input = new BufferedInputStream(new FileInputStream("C:/Bookessais.xls"));
POIFSFileSystem fs = new POIFSFileSystem(input);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row;/* Initialisation*/
HSSFCell cell = null;
int theColIndexYouWant = 3;
int cols = row.getLastCellNum();// ERROR LINE
for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++)
{
row = sheet.getRow(rowIndex);
if (row != null) {
double key = 0.0;
for (int colIndex = 0; colIndex < cols; colIndex++)
{
if (colIndex == theColIndexYouWant)
{
int colIndex1 = colIndex - 3;
String key1;
cell = row.getCell(colIndex);
if(HSSFCell.CELL_TYPE_NUMERIC== cell.getCellType())
key = cell.getNumericCellValue();
System.out.println("\n");
System.out.println(" the key is---" +key);
System.out.println(" initial date is: "+ exDate);
if(key == exDate){ System.out.println(" IT IS A MATCH!");}
else System.out.println(" NOT A MATCH");
cell = row.getCell(colIndex1);
key1 = cell.getStringCellValue();
if(HSSFCell.CELL_TYPE_STRING==cell.getCellType())
System.out.println(" the task is: " +key1+ " Line: "+rowIndex);
}
}
}
}
}
catch (IOException ex) {
ex.printStackTrace(System.out);
я попытался поймать исключения нулевого указателя, но он не работает, как хорошо. Могу ли я помочь? спасибо
почему вы не используете 'попытаться поймать 'блок ?! –
HSSFRow row;/* Инициализация */является объявлением не инициализацией. ваша строка равна нулю в точке, где вы получаете ошибку. – wxyz