Apache POIを使用してCSVデータを効率的にインポートするにはどうすればよいですか? Excelスプレッドシートに保存したい非常に大きなCSVファイルがある場合、セルごとにインポートするのが最善の方法だとは思いません...?
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にロードします。
ファイル拡張子に基づいて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>
CSVファイルにはApachecommons-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である2次元配列からシート範囲にデータを入力します。
あなたの状況では、最初にCSVファイルを配列に読み込み、次に上記のような構文を使用してワークシートに配置します。
スタンスコット