将列表写入csv文件的一列

时间:2018-02-15 04:47:08

标签: java csv

我需要一种方法来处理如何将列表作为列写入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

1 个答案:

答案 0 :(得分:2)

Apache Commons CSV

使用Apache Commons CSV库来读取/写入各种CSVTab-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));
        }
    }
}