Я использую SuperCSV для анализа записей CSV в Object. Мои CSV-файлы имеют дополнительный столбец в конце, и я хочу обработать только первые X столбцов. Поэтому я определяю отображение String[]
для первых X столбцов и CellProcessor[]
того же размера. Но, похоже, это не работает и выдает исключение, что количество процессоров ячеек должно быть точно таким же, как и количество столбцов.Игнорировать дополнительные столбцы в csv - SuperCSV
Может кто-нибудь сказать мне, если я что-то упустил. Нужно ли определять массив отображения, чтобы иметь одинаковые столбцы, как в пяти, даже если я их не хочу?
public CsvToBeanParser(Reader reader, Class<T> type, CsvPreference preference, CellProcessor[] cellProcessors, String[] mapping, boolean skipHeader)
throws IOException {
this.beanReader = new CsvBeanReader(reader, preference);
this.mapping = mapping;
if (skipHeader) {
beanReader.getHeader(true);
}
this.cellProcessors = cellProcessors;
this.type = type;
}
/**
* Parse and return record.
*
* @return
* @throws Exception
* if there is any parsing error
*/
public T getItem() throws Exception {
try {
return (T) beanReader.read(type, mapping, cellProcessors);
} catch (Exception e) {
LOG.error("Error parsing record", e);
throw e;
}
}
Вот мои картографирования и клеточные процессоры
String[] mapping = {"column1", "column2"};
CellProcessor[] cellProcessors = {null, null};
Это работает для файла
column1, column2
1,2
, но не для (где я хочу, чтобы игнорировать колонка3)
column1, column2, column3
1,2,3
Не могли бы вы разместить немного кода, чтобы мы могли посмотреть? – Houdini
Также вы используете 'AbstractCsvReader'? – Houdini
Я использую CsvBeanReader – RandomQuestion