2017-10-15 15 views
-2

J'essaie d'exporter mon jTable en fichier texte. Voici mon codeJtable données à txt

for (int i = 0; i < table.getRowCount(); i++) { 
      for (int y = 0; y < table.getColumnCount(); y++) { 

       if (table.getValueAt(i, y) != null) { 

         bw.write(table.getValueAt(i, y) + " "); 

       } 

      } 

      bw.newLine(); 
     } 

Tout fonctionne correctement avec toutes les cellules remplies de valeurs. Mais quand je ne remplis que la moitié des cellules, l'exportation n'est pas parfaite. La dernière valeur est manquante. par exemple:

[value1][value2][value3] 
    [value4][value5][value6] 
    [value7][value8][value9] 

imprime toutes les valeurs dans un fichier texte. mais ceci:

[value1][value2][value3] 
    [value4][value5][value6] 
    [null][null][null] 

imprime uniquement valeur1, valeur2, valeur3, valeur4 et valeur5. Où est le problème?

+2

J'ai mis en minorité cette question car il n'y a aucune preuve de débogage effectué sur ce code. S'il vous plaît [modifier] votre question pour nous montrer ce que votre débogage a découvert, ainsi qu'une question spécifique sur une ligne de code spécifique. Voir: [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) et [Comment déboguer de petits programmes] (https://ericlippert.com/2014/03/05/how-to-debug-petits-programmes /). –

+1

Copie possible de [* impossible d'extraire la valeur actuelle de la cellule en cours d'édition *] (https://stackoverflow.com/q/20910983/230513). – trashgod

+0

Trashgod- merci beaucoup. Ça marche. Vous pouvez écrire votre réponse comme réponse afin que je puisse vous donner un crédit pour Solution. :) – jv95

Répondre

0

les opérations suivantes:

public void writeTXT(JTable table) throws IOException, ClassNotFoundException, SQLException { 
    Writer writer = null; 
    try{ 
    writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("filename.txt"))); 
    StringBuffer bufferHeader = new StringBuffer(); 
    for(int i = 0; i<table.getColumnCount();i++){ 
     bufferHeader.append(table.getColumnName(i)); 
     if(i!=table.getColumnCount()) bufferHeader.append(" "); 
    } 
    writer.write(bufferHeader.toString()+"\r\n"); 

    for(int j = 0; j<table.getRowCount(); j++){ 
     StringBuffer buffer = new StringBuffer(); 
     for (int k = 0; k<table.getColumnCount(); k++){ 
     buffer.append(table.getValueAt(j,k)); 
     if(k!=table.getColumnCount()) buffer.append(" "); 
     } 
     writer.write(buffer.toString()+"\r\n"); 
    } 
    }finally{ 
    writer.close(); 
    } 
} 

Ne pas inclure la première boucle for si vous n'avez pas les noms de colonnes/ne les ont pas besoin.