2016-08-01 18 views
0

Ich verwende Apache Poi, um Daten aus Excel-Tabelle zu extrahieren und zu versuchen, extrahierte Werte in einem Array zu speichern.Excell Zelle Wert in einem Array extrahieren

Ich bekomme java.lang.NullPointerException Fehler.

Ich suchte danach, und anscheinend diese Ausnahme ausgelöst, wenn Sie versuchen, einen Wert zu einem Objekt zuzuweisen, dessen Wert null ist.

Ich habe versucht, viele Beispiel nachschlagen, aber die meisten Beispielcodes nur Zelle Wert auszudrucken. Ich möchte sie in einem Array speichern, um einige Berechnungen durchzuführen.

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]); 
      } 
     } 

    } 


} 

Alle Vorschläge werden geschätzt.

+1

Bitte, fügen Sie Stacktrace mit NullPointerException zu Frage. –

+1

Mögliche Duplikate von [Was ist eine NullPointerException, und wie behebe ich es?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-fix-it) – Blobonat

+1

@shujaat btw '@SuppressWarnings (" null ")' wird dich hier nicht speichern beace NullPointerException ist eine Laufzeit-Ausnahme und keine Compiler-Warnung. –

Antwort

1

Ihr modify Array ist Null, also num += num; wird Ihnen NPE geben. Sie müssen dieses Array mit für ein Beispiel double [] modify = new double[1000]; anstelle von double [] modify = null ;

+0

Das hat funktioniert, danke – shujaat

+0

Kannst du mir bitte erklären, warum es genau funktioniert hat? – shujaat

+0

double [] modify = new double [1000]; erstellt ein Objekt der Klasse double right ?. aber immer noch haben wir nichts zugewiesen, also ist es im Grunde Null – shujaat

0

erstellen Ich denke, zuerst müssen Sie die Zeilen definieren, von wo Sie versuchen, die Werte zu extrahieren.

Apache Poi haben Option für Zeile, d. H. XSSFRow.

PS würde ich persönlich HSSF anstelle von XSSF empfehlen, daher HSSF ist für neue Version von Excel. Sie müssen den Namen der Dateierweiterung in HSSF ändern, wenn das gleiche Dokument von XSSF verwendet wird (Ursache der Versionsinkompatibilität).

+0

Ich benutzte hssf aber eclipse gab einen Fehler und empfahl, xssf zu verwenden (da Dateiendung wa xlsx) – shujaat