Я работаю с Супер CSV, и он похож на удивительный пакет.
Мое единственное беспокойство - то, как работать со столбцами с пробелами на их имена. Нет, я не могу возвратиться и удалить пробелы сам. Эти файлы будут даны мне сотнями, и у меня нет времени, чтобы возвратиться и зафиксировать все 60 столбцов для каждого файла, и я не могу доверять всем остальным, чтобы сделать это правильно.
Как я могу работать со столбцами с пробелами в заголовке (т.е. "Имя" не "FirstName" или "firstName")?
Спасибо!
Для кодирования образцов посмотрите здесь: http://supercsv.sourceforge.net/codeExamples_general.html
Вы заметили эту строку в примерах, на которые вы ссылаетесь:
final String[] header = inFile.getCSVHeader(true);
Это должно дать вам имена столбцов, не так ли?
http://supercsv.sourceforge.net/javadoc/index .html
Думаю, теперь я понял ваш вопрос. Аргумент String [], переданный функции read
, принимает имена свойств класса, в который вы хотите читать. Он позиционный, поэтому ему не нужно называть ничего похожего на заголовки. Так, например, вы можете иметь String [] header = inFile.getCSVHeader ()
, но затем иметь отображение headerName-> propertyName
, поэтому, если ваши поля заголовка были:
First Name, Last Name, Age
но ваш класс был
getFirstName(), setFirstName(...);
getLastName(), setLastName(...);
getYears(), setYears();
передан методу read
, а не (String []) {«Имя», «Фамилия», «Возраст»}
, как ваш заголовок есть, но передайте в read
, массив (String []) {"FirstName", "LastName", "Years"}
.
Если вы хотите сопоставить заголовок CSV с другим именем, вы можете создать хэш-карту и использовать ее для своей внутренней реализации, например вы можете сопоставить "First Name" с "firstName" и заполнить ваш bean-компонент на основе ваших внутренних имен ..