java - 寻找允许按名称读取列的 Java CSV 库

标签 java csv supercsv

此外,允许以可读/简单的方式处理长行,无论是写入还是读取。

我查看了 opencsv 但它没有以任何顺序方式引用行中的元素,并且 supercsv 不允许按名称查看列而只能查看数字.

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

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

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

最佳答案

我真的不能说 opencsv,但如果你有固定数量的字段 you might be able to use the JavaBean binding to do something like this .

Super CSV但是,绝对支持使用 CsvBeanReader、CsvDozerBeanReader 或 CsvMapReader(以及它们的等价物)按名称读写 CSV 行。

如果您希望保持简单并使用映射(列名作为键,列值作为值),那么您可以使用 CsvMapReader . reading上有例子和 writing在 Super CSV 网站上使用 CsvMapReader。

阅读示例:

 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();
}

写法很相似。

关于java - 寻找允许按名称读取列的 Java CSV 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734454/

相关文章:

java - 为什么接口(interface)方法无法解析?

Python:替换 CSV 文件中的数据

python - 写入 csv 文件列而不是 python 中的行

vb.net - DataGridView 转 CSV 文件

java - NoSuchMethodException : java. time.LocalDateTime.<init>() 使用 Super CSV 读取 CSV

java - 带 Spring 启动的 Keyvault MSI : How to config keyvault to use Azure cli credentials instead of managed identity while running on local?

java - 我必须使用 "Spring Rabbit"而不是 "Spring Cloud Stream"

java - 使用 OpenCSV 将 CSV 解析为多个/嵌套 bean 类型?

java - Java 一次 for 循环

java - 如何配置 Super CSV 以引用除列名之外的所有值?