Как я могу эффективно импортировать данные CSV с помощью Apache POI? Если у меня есть очень большой CSV-файл, который я хотел бы сохранить в своей электронной таблице Excel, то я не думаю, что переход по ячейкам — лучший способ импортировать...?
Импорт данных CSV с помощью Apache POI
Ответы (4)
Apache POI никогда не предназначался для обращения к CSV-файлам. Хотя файл CSV можно открыть в Excel, у Excel есть собственная программа чтения, которая выполняет автоматический импорт. Предполагается, что ваш CSV имеет суффикс .csv вместо .txt. Если он имеет суффикс .txt, сохраните его как .csv. Все, что вам нужно сделать, это щелкнуть правой кнопкой мыши CSV и открыть с помощью Excel. Presto, CSV был импортирован в Excel.
Я предполагаю, что вы хотите проанализировать данные из txt-файла в файл Excel. Если это так, я бы посоветовал вам использовать библиотеку, например SuperCSV, вместо того, чтобы пытаться заставить POI что-то сделать. это никогда не было предназначено для этого. Он загрузит все это в Bean, Map или List по вашему выбору, поскольку он анализирует данные, а затем вы можете либо записать их обратно в выбранном вами формате в файл .csv, либо использовать JDBC-ODBC Bridge или Apache POI для записи. непосредственно в формате и .XLS. Добавляет дополнительный шаг, но тогда у вас есть полный контроль над данными.
SuperCSV имеет лицензию Apache2, поэтому она должна подойти для всего, что вы решите с ней делать.
Или просто используйте функцию split в Java и разбейте CSV на массивы и загрузите массивы в .xls с POI.
Мы пишем java-код на основе расширения файла. Здесь мы имеем дело с расширением .csv, а вот код Apache POI для его обработки. Мы разделяем контент и сохраняем в массиве, а затем используем его в дальнейшем.
CSVParser parser = new CSVParser(new FileReader("D:/your_file.csv"), CSVFormat.DEFAULT);
List<CSVRecord> list = parser.getRecords();
for (CSVRecord record : list) {
String[] arr = new String[record.size()];
int i = 0;
for (String str : rec) {
arr[i++] = str;
}
}
parser.close();
Связанная зависимость Maven:
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.2</version>
</dependency>
Используйте apache commons-csv для файлов CSV. Обновите свой pom.xml со следующей зависимостью
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
Вы можете найти полезные примеры из - нажмите здесь< /а>
Самый эффективный способ добавить информацию в электронную таблицу Excel — использовать массив. Этот код:
Sheets(1).Range("A1").Resize(uBound(myArray),uBound(myArray,2)).Value = myArray
заполняет диапазон листов из двумерного массива, где нижняя граница равна 1.
В вашей ситуации я бы сначала прочитал файл CSV в массив, а ЗАТЕМ использовал синтаксис, подобный приведенному выше, чтобы поместить его на рабочий лист.
Стэн Скотт