【问题标题】:Read CSV files with known and unknown columns java读取具有已知和未知列的 CSV 文件 java
【发布时间】:2019-07-15 06:53:34
【问题描述】:

我想知道是否有办法读取包含已知和未知列的 csv 文件。

例如,第一个 csv 文件中的列是: id, firstname, lastname, city, country 未知的列是城市和国家

第二个csv文件是:

id, firstname, lastname, phone number unknwon 列是电话号码

我要解析的对象是:

public class Person {

    Long id;
    String firstname;
    String lastname;

    Map<String,String> additionalInfo;

}

附加信息映射将包含“未知”列作为键,值将是该列中的行值。

有什么想法吗?

谢谢。

【问题讨论】:

  • 你试过opencsv吗?
  • 我做了,但我没有看到处理未知列的选项

标签: java spring csv opencsv


【解决方案1】:

OpenCSV 允许您使用 @CsvBindAndJoinByName 注释执行类似的操作。取自the docs

public class Demonstration {

   @CsvBindByName(column = "index")
   private String index;

   @CsvBindAndJoinByName(column = ".*", elementType = String.class)
   private MultiValuedMap<String, String> theRest;

   // Getters and setters go here
}

相同的文档提到了一个警告:如果您有多个 @CsvBindAndJoinByName,则必须小心不要有重叠的模式,否则结果是未定义的。

【讨论】:

  • 谢谢,我会检查并告诉你
【解决方案2】:

遇到同样的情况,想从 CSV 文件访问未知列。这是解决方案-

`

public class CSVFileDTO {
@CsvBindByName
private String name;

@CsvBindAndJoinByName(column = ".*", elementType = String.class)
private MultiValuedMap<String, String> theRest;

} `

访问Rest列的方式-

    List<CSVFileDTO> resultData;
    MultiValuedMap<String, String> multivaluedMap = resultData.get(0).getTheRest();
    Collection<Map.Entry<String, String>> entries = multivaluedMap.entries();

    for(Map.Entry<String, String> ent : multivaluedMap.entries()){
        entityList.add(ent.getKey());
    }

【讨论】:

    【解决方案3】:

    检查此https://github.com/ozlerhakan/poiji API 的功能 9 以读取 excel 文件。

    public class MusicTrack {
    
    @ExcelCellName("ID")
    private String employeeId;
    
    @ExcelCellName("AUTHOR")
    private String author;
    
    @ExcelCellName("NAME")
    private String name;
    
    @ExcelUnknownCells
    private Map<String, String> unknownCells;}
    

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2015-03-20
      相关资源
      最近更新 更多