2013-07-24 4 views
4

Je vais créer des fichiers CSV en utilisant java. Voici une partie du code:Créer un fichier CSV en utilisant java

try{ 

    FileWriter writer = new FileWriter(sFileName); 

    writer.append("Title"); 
    for(StoredArticle sa3:historyFile.keySet()){ 
     for(String k3:sa3.getTimeAndPopularity().keySet()){ 
      writer.append(','); 
      writer.append(k3); 
     } 
    } 
    writer.append('\n'); 

Le problème est que je crée avec succès le fichier CSV. Et dans la boucle for k3 est l'heure présentée au format 2013/07/22 15:40:23. Mais les secondes "23" ne peuvent pas être affichées. Les autres montrent bien. quel est le problème s'il vous plaît aider.

Voici le code de ma classe entière

package uk.ac.ncl.fanyaoxia.createCSV; 

import java.io.FileWriter; 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Map; 

import uk.ac.ncl.fanyaoxia.monitor.MonitorRecentUpdates; 
import uk.ac.ncl.fanyaoxia.monitor.StoredArticle; 
import uk.ac.ncl.fanyaoxia.webpagefetch.ReadXml; 

public class CreateCSVFile { 
    private static Map < StoredArticle, ReadXml > historyFile; 

    public CreateCSVFile() { 
     historyFile = new HashMap < StoredArticle, ReadXml >(); 
    } 
    public void createFile() { 
     generateCsvFile("HistoryTable.csv"); 
    } 

    private static void generateCsvFile(String sFileName) { 
     MonitorRecentUpdates csvFile = new MonitorRecentUpdates(); 
     historyFile = csvFile.getMap(); 
     try { 

      FileWriter writer = new FileWriter(sFileName); 

      writer.append("Title"); 
      for (StoredArticle sa3: historyFile.keySet()) { 
       for (String k3: sa3.getTimeAndPopularity().keySet()) { 
        writer.append(','); 
        writer.append(k3); 
       } 
      } 
      writer.append('\n'); 

      for (StoredArticle sa3: historyFile.keySet()) { 
       writer.append(sa3.getStoredTitle()); 
       for (String k3: sa3.getTimeAndPopularity().keySet()) { 
        writer.append(','); 
        writer.append(sa3.getTimeAndPopularity().get(k3).toString()); 
       } 
       writer.append('\n'); 
      } 
      writer.flush(); 
      writer.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+5

Pourquoi ne pas utiliser l'un des [les bibliothèques CSV disponibles] (http://stackoverflow.com/questions/101100/csv- api-pour-java)? – assylias

+1

Vous devez d'abord vérifier (ou au moins fournir) le contenu de vos collections. Si vous imprimez l'heure sur la console, s'affiche-t-elle correctement? – Martin

+2

@assylias parce que csv est si simple qu'il n'est pas nécessaire d'avoir une dépendance à une librairie externaL où vous devez vérifier la condition de la licence. Writer un "," et une nouvelle ligne, c'est tout ce dont vous avez besoin dans CSV – AlexWien

Répondre

3

Les secondes sont émis comme prévu par le code. Ils sont visibles dans un éditeur de texte.

Ils n'étaient tout simplement pas visibles dans le tableur MS Excel. Une cause possible serait que la largeur de la colonne était trop petite.

[Cette réponse résume le résultat de la conversation entre l'OP et moi-même au-dessus.]

Questions connexes