Импорт данных CSV с помощью Apache POI - PullRequest
13 голосов
/ 06 апреля 2009

Как эффективно импортировать данные CSV с помощью Apache POI? Если у меня есть очень большой CSV-файл, который я хотел бы сохранить в своей электронной таблице Excel, я не думаю, что переход от ячейки к ячейке - лучший способ импорта ...?

Ответы [ 4 ]

16 голосов
/ 06 июля 2009

Apache POI никогда не был предназначен для вызова файлов CSV. В то время как файл CSV может быть открыт в Excel, в Excel есть собственный ридер, который выполняет автоматический импорт. Это предполагает, что ваш CSV имеет .csv вместо .txt суффикса. Если он имеет суффикс .txt, сохраните его как .csv. Все, что вам нужно сделать, это щелкнуть правой кнопкой мыши на CSV и Открыть с помощью Excel. Presto, CSV был импортирован в Excel.

Я предполагаю, что вы хотите проанализировать данные из текстового файла в файл Excel. Если это так, я бы предложил вам использовать библиотеку liKe SuperCSV вместо того, чтобы пытаться заставить POI делать то, что никогда не было разработано. Он будет загружать все это в Bean, Map или List по вашему выбору при анализе данных, а затем вы можете либо записать их обратно в выбранном формате в файл .csv, либо использовать мост JDBC-ODBC или Apache POI для записи. это прямо в формате .XLS. Добавляет дополнительный шаг, но тогда у вас есть полный контроль над данными.

SuperCSV имеет лицензию Apache2, поэтому она должна подойти для всего, что вы решите с ней сделать.

Или просто используйте функцию .split () в java, разберите CSV на массивы и загрузите массивы в .xls с помощью POI.

1 голос
/ 07 апреля 2009

Наиболее эффективный способ добавления информации в электронную таблицу Excel - использование массива. Этот код:

Sheets(1).Range("A1").Resize(uBound(myArray),uBound(myArray,2)).Value = myArray

заполняет диапазон листа из двумерного массива, где нижняя граница равна 1.

В вашей ситуации я сначала прочитал бы файл CSV в массив, а затем использовал бы синтаксис, подобный приведенному выше, чтобы поместить его на лист.

Стэн Скотт

0 голосов
/ 27 июля 2018

Мы пишем код 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>
0 голосов
/ 15 марта 2018

Используйте apache commons-csv для файлов CSV. Обновите ваш pom.xml, указав следующую зависимость

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-csv</artifactId>
    <version>1.5</version>
</dependency>

Вы можете найти полезные хорошие примеры из - нажмите здесь

...