Мне интересно, есть ли способ читать CSV-файлы с известными и неизвестными столбцами.
например, столбец в первом файле csv: id, имя, фамилия, город, страна неизвестные столбцы — это город и страна.
второй файл csv:
id, имя, фамилия, номер телефона столбец unknwon - это номер телефона
Объект, который я хочу разобрать, это:
public class Person {
Long id;
String firstname;
String lastname;
Map<String,String> additionalInfo;
}
карта AdditionalInfo будет содержать в качестве ключей «неизвестные» столбцы, а значениями будут значения строки в этом столбце.
Есть идеи?
Спасибо.
Я сделал, но я не видел опции, которая обрабатывает неизвестные столбцы




OpenCSV позволяет вам сделать что-то подобное, используя аннотацию @CsvBindAndJoinByName. Взято из документы:
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;
} `
Способ доступа к колонке «Остальное» —
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());
}
Проверьте функцию 9 этого https://github.com/ozlerhakan/poiji API для чтения файлов 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;}
вы пробовали с
opencsv?