2013-07-24 65 views
4

我打算使用java创建CSV文件。以下是部分代码:使用java创建CSV文件

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'); 

问题是我成功创建了CSV文件。在for循环中,k3是格式为2013/07/22 15:40:23.的时间,但秒数“23”无法显示。其他人表现很好。有什么问题请帮忙。

这是我的整个类

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

为什么不使用的一个[可用CSV库(http://stackoverflow.com/questions/101100/csv- API换JAVA)? – assylias

+1

首先,您必须检查(或至少提供)您收藏的内容。如果您将时间打印到控制台,它是否显示正确? – Martin

+2

@assylias因为csv非常简单,所以不需要依赖于外部库lib,您必须检查许可条件。 Wrting一个“,”和一个新的行,这就是你所需要的所有CSV – AlexWien

回答

3

的秒的输出中由代码如预期的代码。它们在文本编辑器中可见。

它们只是在电子表格应用程序MS Excel中不可见。一个可能的原因是列宽太小。

[这个答案总结了OP和我上面之间的对话的结果。]