另外,允许以可读/容易的方式处理长行,既可以写入也可以读取。

我已经研究了opencsv,但是它没有以任何连续的方式引用行中的元素,并且supercsv不允许按名称而是仅按数字查看列。

另一个警告-我需要能够按名称寻址列-列数不是恒定的,并且只有列标题的一部分是恒定的,例如:

Name|Number|Color1|Color2......|Color67|

并非所有给定CSV文件中都存在1到67之间的所有颜色。

最佳答案

我真的不能和opencsv对话,但是如果您有固定数量的you might be able to use the JavaBean binding to do something like this字段。

但是,Super CSV绝对支持使用CsvBeanReader,CsvDozerBeanReader或CsvMapReader(及其等效书写方式)按名称读取和写入CSV行。

如果您希望简化操作并使用映射(将列名作为键,将列值作为值),则可以使用CsvMapReader。超级CSV网站上有一些使用CsvMapReader的readingwriting的示例。

阅读示例:

 ICsvMapReader mapReader = new CsvMapReader(
      new FileReader("foo.csv"), CsvPreference.EXCEL_PREFERENCE);
 try {
  final String[] headers = mapReader.getHeader(true);
  Map<String, String> row;
  while( (row = mapReader.read(headers)) != null) {
    for (String header : headers) {
      System.out.println(header + " is " + row.get(header));
    }
  }
} finally {
  mapReader.close();
}

写作非常相似。

07-24 22:13