2015-10-06 91 views
1

我正在从一个CSV.1文件写入另一个CSV.2文件。但我只希望提取某些列,而不是从CSV.1文件到CSV.2文件的所有内容。有没有办法做到这一点?顺便说一句,我使用Java来做到这一点。谢谢。只从一个CSV文件中提取某些列以写入另一个CSV文件

+0

是的,你可以!使用'Apache POI' API,如需进一步信息,请查看此链接http://viralpatel.net/blogs/java-read-write-excel-file-apache-poi/ –

+1

正如其他人所建议的,最好使用第三方图书馆。如果内容包含分隔符,则解析csv并不重要。 –

回答

1

我会建议使用一些库,如OpenCSV。 Pleasae看看这个文档。

但是,如果你想用你的“自己的代码”,你可以使用这样的事情:

// Set your splitter, mostly "," or ";" 
String csvSplitter = ";" 
// A buffered reader on the input file 
BufferedReader br = new BufferedReader(new FileReader("CSV.1")); 
// A writer to the output file 
PrintWriter output = new PrintWriter("CSV.2", "UTF-8"); 
// Read line after line until EOF 
while ((line = br.readLine()) != null) { 
    // Split the current line into columns 
    String[] cols = line.split(csvSplitter); 
    // Only write the needed columns to the output file (eg. columns at index 4, 5 and 8) 
    output.println(cols[4] + csvSplitter + cols[5] + csvSplitter + cols[8]); 

}

0

你可以做到这一点在Java中,因为当你阅读在Java中的CSV文件,你一行一行地阅读。 因此,您可以将每一行与您的CSV分隔符分隔。您需要为这行添加一列逐列的内容。然后你跳过你不想要的列。 您对每一行重复一遍。

相关问题