在java中合并多个csv文件

时间:2015-10-27 10:59:13

标签: java csv merge multiple-columns supercsv

我有3个csv文件。每个文件包含10列,但只有1列具有不同的值。

荷兰 Dutch

French

英语 English

如图所示,每种语言只有目的地名称不同。

我想成为csv文件,如下所示: Merged csv's

如何在现有列之间添加列,以及如何更改标题(DEST_NAME_DISPLAY - > DEST_NAME_EN)?

到目前为止,除了使用Super csv读取csv文件之外,我对csv操作的经验不足

到目前为止我所知道的例子

public List<City> readWithCsvMapReader(String file, String source) throws IOException, AuthenticationException, RepositoryException {
    ICsvMapReader mapReader = null;
    FileInputStream stream = new FileInputStream(file);
    InputStreamReader reader = new InputStreamReader(stream, ENCODING);
    try {
        mapReader = new CsvMapReader(reader, PREFERENCE);
        final String[] header = mapReader.getHeader(true);
        final CellProcessor[] processors = getProcessors();
        Map<String, Object> locationMap;
        while ((locationMap = mapReader.read(header, processors)) != null) {
            /*do some logic*/
        }
    } finally {
        if (mapReader != null) {
            mapReader.close();
        }
    }
}

public CellProcessor[] getProcessors() {
    final CellProcessor[] processors = new CellProcessor[]{
            new NotNull(), // COU_ID
            new NotNull(), // COU_NAME
            new NotNull(), // DEST_ID
            new NotNull(), // DEST_NAME_DISPLAY
            new Optional(), //DEST_PARENT_ID
            new NotNull(), // DEST_STATION_COUNT
            new NotNull(), // DEST_CHILD_DEST_COUNT
            new NotNull(), // DEST_FLAG_APT
            new NotNull(), // DEST_FLAG_WIN
            new NotNull(), // DEST_FLAG_DEL
    };
    return processors;
}

1 个答案:

答案 0 :(得分:1)

打开所有三个CSV文件。

在每次迭代中,从每个文件中读取一行,从一个中获取所有单元格值,从另外两个中获取不同单元格的值。合并到包含所有所需数据的新行,将此行写入输出CSV。

关闭所有文件。处理异常状态(每个文件中的行数不同,每个文件的当前行的ID不同,......)。