读取包含已知和未知列的 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;}
我想知道是否有办法读取包含已知和未知列的 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;}