0

現在、適度に巨大なExcelシート(10〜15 MB)を読み取り、いくつかの列を選択して、Excelシートの行数と同じ数のテキストファイルを作成するサンプルアプリケーションを構築していますが、選択した列のみが含まれています。

例:明確にするため。xlシートにName、empid、email、mobileNo:の5つの列が含まれ、アドレスと合計行またはレコードが50000であるとします。次に、Name、mobileNo:、およびemailIdのみを含む50000のテキストファイルを作成します。

エクセルシートのサイズは巨大で、エクセルシートはxlsxまたはxlsである可能性があるため、私はそれを読むためにapachepoiを使用しています。しかし、私はこの後に従うべき最善のアプローチを決めることができません。

アプローチ1:Excelシート全体をmysqlなどのデータベースに移動しようとする必要があります。したがって、取得したヘッダー列に基づいてその場でテーブルを作成し、その中のすべての行をダンプする必要があります。次に、選択クエリを使用して、必要な列を取得し、テキストファイルを作成できます

アプローチ2:クラスファイルをその場で作成できるASMライブラリについて読みました。行ごとにオブジェクトを作成し、すべてをリストに追加することを考えていました。ただし、ここで特定の列を取得するには多くの反復が必要であり、リストのサイズはExcelシートの行に比例します。これは膨大な量になります。

現在、私はどのアプローチも決めることができません。私は確かに両方のアプローチが悪いことを知っています:(。どのように進めるかについてのアドバイスは私にとって計り知れない助けになるでしょう。

4

1 に答える 1

1

スプレッドシートの情報コンテンツを保持するメモリ内のデータ構造を作成し、そこから作業してみませんか。

これは、各配列が行を表す文字列の配列のリストのような単純なものである可能性があります。列名を処理するには、列名を列番号にマップするハッシュマップを使用します。


スプレッドシートが大きすぎてメモリに保存できない場合を除いて、アプローチ1はやり過ぎです。

あなたのアプローチ2は不必要に複雑です。クラスファイルをその場で作成しても、単純な汎用データ構造では実現できないことは何も実現されません。

于 2012-04-14T12:06:40.310 に答える