webdevqa.jp.net

ApachePOIを使用したCSVデータのインポート

Apache POIを使用してCSVデータを効率的にインポートするにはどうすればよいですか? Excelスプレッドシートに保存したい非常に大きなCSVファイルがある場合、セルごとにインポートするのが最善の方法だとは思いません...?

13
Jake

Apache POIは、CSVファイルを呼び出すようには設計されていません。 CSVファイルはExcelで開くことができますが、Excelには自動インポートを行う独自のリーダーがあります。これは、CSVに.txtサフィックスではなく.csvがあることを前提としています。サフィックスが.txtの場合は、.csvとして保存します。次に、CSVを右クリックしてExcelで開くだけです。 Presto、CSVがExcelにインポートされました。

私はあなたがtxtファイルからExcelファイルにデータを解析したいと思っていると仮定しています。その場合は、POIに設計されていないことを実行させる代わりに、Library liKe SuperCSV を使用することをお勧めします。データを解析するときに、すべてを選択したBean、マップ、またはリストにロードします。次に、選択した形式で.csvファイルに書き戻すか、JDBC-ODBCブリッジまたはApachePOIを使用して書き込みます。直接.XLS形式に変換します。追加のステップを追加しますが、データを完全に制御できます。

SuperCSVはApache2ライセンスを持っているので、それを使って何をするにしても良いはずです。

または、Javaで.split()関数を使用して、CSVを配列に解析し、POIを使用して配列を.xlsにロードします。

14
WolfmanDragon

ファイル拡張子に基づいて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>
1
mannedear

CSVファイルにはApachecommons-csvを使用します。次の依存関係でpom.xmlを更新します

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

-- ここをクリック から便利な良い例を見つけることができます

0
Arundev

Excelスプレッドシートに情報を追加する最も効率的な方法は、配列を使用することです。このコード:

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

下限が1である2次元配列からシート範囲にデータを入力します。

あなたの状況では、最初にCSVファイルを配列に読み込み、次に上記のような構文を使用してワークシートに配置します。

スタンスコット

0
Stan Scott