2016-07-20 6 views
-2
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at dacia.Principale.jButton10ActionPerformed(Principale.java:1204) 
    at dacia.Principale.access$500(Principale.java:44) 

Code:Exception in thread "AWT-Eventqueue-0" java.lang.NullPointerException TreeMap

XSSFWorkbook wg= new XSSFWorkbook(); 
    XSSFSheet sht=wg.createSheet(); 

    TreeMap<String,Object[]> data= new TreeMap<>(); 
    // data.put("-1",new Object[]){"chasis","marque","couleur","nom client","date d entree","date sortie","telephone","numero WW","position","mode paiment","gamme","version"}); 
    data.put("-1",new Object[]{jTable2.getColumnName(0),jTable2.getColumnName(1),jTable2.getColumnName(2),jTable2.getColumnName(3),jTable2.getColumnName(4),jTable2.getColumnName(5),jTable2.getColumnName(6),jTable2.getColumnName(7),jTable2.getColumnName(8),jTable2.getColumnName(9),jTable2.getColumnName(10),jTable2.getColumnName(11)}); 

    for(int i=0;i<jTable2.getRowCount();i++) 
    { 

     data.put(Integer.toString(i),new Object[]{jTable2.getValueAt(i,0).toString(),jTable2.getValueAt(i,1).toString(),jTable2.getValueAt(i,2).toString(),jTable2.getValueAt(i,3).toString(),jTable2.getValueAt(i,4).toString(),jTable2.getValueAt(i,5).toString(),jTable2.getValueAt(i,6).toString(),jTable2.getValueAt(i,7).toString(),jTable2.getValueAt(i,8).toString(),jTable2.getValueAt(i,9).toString(),jTable2.getValueAt(i,10).toString(),jTable2.getValueAt(i,11).toString()}); 
    } 
    //write to excel 
    Set <String> ids=data.keySet(); 
    XSSFRow row ; 
    int roow=0 ; 
    for (String st : ids) 
    { 
     row=sht.createRow(roow++); 
     Object[] values=data.get(st); 
     int cellId=0 ; 
     for(Object o : values) 
     { 
      Cell cell=row.createCell(cellId++); 
      cell.setCellValue(o.toString()); 

     } 
    } 
    try { 
     //write to file 
     FileOutputStream fos= new FileOutputStream(new File("/home/elprincipe/Desktop/dacia.xls")); 
     wg.write(fos); 
     fos.flush(); 
     fos.close(); 

    } catch (FileNotFoundException ex) { 
     Logger.getLogger(Principale.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(Principale.class.getName()).log(Level.SEVERE, null, ex); 
    } 

Das Problem ist in:

data.put(Integer.toString(i),new Object[]{jTable2.getValueAt(i,0).toString(),jTable2.getValueAt(i,1).toString(),jTable2.getValueAt(i,2).toString(),jTable2.getValueAt(i,3).toString(),jTable2.getValueAt(i,4).toString(),jTable2.getValueAt(i,5).toString(),jTable2.getValueAt(i,6).toString(),jTable2.getValueAt(i,7).toString(),jTable2.getValueAt(i,8).toString(),jTable2.getValueAt(i,9).toString(),jTable2.getValueAt(i,10).toString(),jTable2.getValueAt(i,11).toString()}); 
+0

Höchstwahrscheinlich gibt eine der Zellen 'null' zurück und Sie können '.toString() 'nicht aufrufen. –

Antwort

0

Von dem, was ich sagen kann von Ihrem Code, etwas in Ihrem jTable2 wird nicht richtig initialisiert.

Die Idee von NullPointerException ist, dass Sie versuchen, ein Objekt zu verwenden, das noch nicht erstellt wurde. Da Sie in der Lage sind, über die jTable2 zu iterieren, und Sie haben keine Ausnahme außerhalb der Grenzen, würde ich sagen, dass eines der Elemente der jTable2 nicht erstellt wird

Was ich vorschlagen würde, geht über dies im Debugger jede Zeile der Tabelle, sorgfältig zu analysieren, bevor Sie versuchen, es zu einem


auch (dies eher eine Art Sache, aber ich denke, es wird Ihnen helfen, auf lange Sicht String zu konvertieren) Sie sollten diese Art von Funktionalität in eine andere Methode verschieben, so dass es leichter zu lesen ist:

for(int i = 0; i < jTable2.getRowCount(); i++) { 
    data.put(convertRow(jTable2, i)); 
} 

public Object[] convertRow(Table jTable2, int row) { 
    rowLength = jTable2[0].length; 
    Object[] row = new Object[rowLength]; 
    for (int i = 0; i < rowLength; i++) { 
     Object datum = jTable2.getValueAt(row, i); 
     if (datum != null) { 
      row[i] = datum.toString(); 
     } 
     else { 
      row[i] = "Null entry" 
     } 
    } 

    return row   
} 

Ich verspreche Ihnen, das wird viel viel einfacher

+0

In der jTabelle habe ich zwei Spalten mit Datumstyp .. ist das ein Problem? –

+0

kein Fehler, aber es in der Datei gibt es nichts zu schreiben: / –

0

Java Dokumentation machen Debuggen https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html#put-K-V-:

Returns: der vorherige Wert mit Schlüssel zugeordnet ist, oder null, wenn keine Zuordnung für Schlüssel war. (A null Rückkehr kann auch bedeuten, dass die Karte zuvor null zugeordnet Schlüssel.)

Nullpointer - wenn der angegebene Schlüssel null ist und diese Karte verwendet natürliche Ordnung, oder dessen Komparator erlaubt keine Null-Tasten

Ich habe keine Ahnung, was Sie versuchen zu setzen .. aber ich würde prüfen, ob Sie einen Null-Wert setzen könnten.