2016-08-01 4 views
0

Я использую apache poi для извлечения данных из листа excel и попытки сохранить извлеченные значения в массиве.Извлечение значения ячейки Excell в массиве

Я получаю java.lang.NullPointerException Ошибка.

Я искал об этом, и, по-видимому, это исключение вызвано, когда вы пытаетесь присвоить значение объекту, значение которого равно null.

Я попытался найти много примеров, но большинство примеров кода просто распечатывают значение ячейки. Я хочу сохранить их в массиве для выполнения некоторых вычислений.

package excelltotext; 
import java.io.*; 
import java.lang.*; 
import java.util.*; 

import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.FormulaEvaluator; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
public class convert { 

    @SuppressWarnings("null") 
    public static void main(String[] args) throws IOException { 
     double [] modify = null ; 
     FileInputStream fs = new FileInputStream(new File ("Book1.xlsx")); 
     XSSFWorkbook wb = new XSSFWorkbook(fs); 
     XSSFSheet sheet = wb.getSheetAt(0); 
     FormulaEvaluator formulaevaluater = wb.getCreationHelper().createFormulaEvaluator(); 
     for (Row row:sheet) 
     { 
      int num = 0; 
      for(Cell cell : row){ 

       switch (formulaevaluater.evaluate(cell).getCellType()) 
       { 
       case Cell.CELL_TYPE_NUMERIC: 

       modify [num] = (cell.getNumericCellValue()); 
       num += num; 
       } 
       System.out.println(modify[num]); 
      } 
     } 

    } 


} 

Любые предложения будут оценены.

+1

Пожалуйста, добавьте stacktrace с вопросом NullPointerException. –

+1

Возможный дубликат [Что такое исключение NullPointerException и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Blobonat

+1

@shujaat btw '@SuppressWarnings (" null ")' не сохранит вас здесь beace NullPointerException - это исключение во время выполнения, а не предупреждение компилятора. –

ответ

1

Ваш modify массив равен нулю, поэтому num += num; предоставит вам NPE. Вы должны создать этот массив с помощью egzample double [] modify = new double[1000]; вместо double [] modify = null ;

+0

Это сработало, спасибо – shujaat

+0

Не могли бы вы объяснить, почему именно это сработало. – shujaat

+0

double [] modify = new double [1000]; создает объект класса double right ?. но все же мы не привязали его ни к чему, так что это в основном нулевое значение – shujaat

0

Я думаю, сначала вам нужно определить строки, откуда вы пытаетесь извлечь значения.

У Apache Poi есть опция для строки i.e XSSFRow.

PS Я лично рекомендовал бы HSSF вместо XSSF, поэтому HSSF предназначен для новой версии excel. Вам нужно изменить имя расширения файла для использования в HSSF, если тот же документ используется XSSF (причина несовместимости версии).

+0

Я использовал hssf, но eclipse дал ошибку и рекомендовал использовать xssf (поскольку расширение файла wa xlsx) – shujaat

Смежные вопросы