读取包含已知和未知列的 CSV 文件 java

Read CSV files with known and unknown columns java

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

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

第二个 csv 文件是:

id, firstname, lastname, phone number 未知列是 phone number

我要解析成的对象是:

public class Person {

    Long id;
    String firstname;
    String lastname;

    Map<String,String> additionalInfo;

}

additionalInfo 映射将包含 'unknown' 列作为键,值将是该列中的行值。

有什么想法吗?

谢谢。

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,则必须注意不要有重叠模式,否则结果是不确定的。

有同样的情况,想从 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());
    }

检查此 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;}