Как я могу эффективно импортировать данные 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 в массив, а ЗАТЕМ использовал синтаксис, подобный приведенному выше, чтобы поместить его на рабочий лист.
Стэн Скотт