我需要一种方法来处理如何将列表作为列写入csv文件。
我有一个类,其数据存储在其数据成员中。 类看起来像这样
public class Final_object {
public String reporttype;
public List<String> metric_name=new ArrayList<String>();
public List<String> id=new ArrayList<String>();
public List<String> name=new ArrayList<String>();
public List<String> type=new ArrayList<String>();
}
我需要将每个列表作为列写入csv
答案 0 :(得分:2)
使用Apache Commons CSV库来读取/写入各种CSV和Tab-delimited格式的文件。
将此添加到您的班级应该完成这项工作:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
//...
public void writeCsv(String outputFilePath) throws IOException {
if(this.metric_name.size()!=this.id.size()
|| this.id.size()!=this.name.size()
|| this.name.size()!=this.type.size()) {
throw new IllegalStateException("ArrayLists backing CSV columns have mismatched size.");
}
try(CSVPrinter csv = new CSVPrinter(Files.newBufferedWriter(Paths.get(outputFilePath)), CSVFormat.DEFAULT)) {
//csv.printRecord("metric_name","id","name","type"); //uncomment if you want a header row
for (int i = 0; i < this.id.size(); i++) {
csv.printRecord(this.metric_name.get(i), this.id.get(i), this.name.get(i), this.type.get(i));
}
}
}