1

私は apache poi を使用して Excel を読み書きします。問題なく実行できます。しかし、既存の Excel で大きな Excel を作成するときにメモリの問題に直面しています。以下で詳しく説明します。列ヘッダーが色付けされているテンプレートがあります。マージされました(1枚のシートで100から150列について話している)これは約10枚のシートを持っています。今、私はデータベースからデータを読み取り、データをこのExcelに入力します。小さなデータセットの場合は実行できますが、大きなデータセットの場合はメモリ不足になります。一度に1000行のデータのような小さなチャンクでdbからデータを取得しますが、その1000を処理して、別のセットを取得します。データの最大行数はシートあたり 50,000 行、最小行数は各シートで 1 行になります

SXSSF について読みましたが、既存の Excel では編集できないという問題があります。

これを解決する方法について、あなたの考えを教えてください。

4

1 に答える 1

1

利用可能なオプションはいくつかありますが、「特効薬」となる単純な答えはありません。残念ながら、Excel ファイル形式を処理するにはかなりの量のメモリが必要です。

  1. Java に与えられるヒープ サイズを増やして、一度により多くのメモリを保持できるようにします。
  2. サーバー用にメモリを追加購入してから、ヒープ サイズを増やします。最近のメモリはかなり安価であり、まともなプログラマーがそのコストをカバーするのに何時間もかかるわけではありません。
  3. 別のファイル形式を使用します。たとえば、CSV はメモリ フットプリントが非常に軽量です。
  4. 低レベルの SAX APIを使用して .xlsx ファイルを読み取り、SXSSFを使用してバッファリングをあまり行わずに再度書き込みます。ただし、HSSF/XSSF を使用するだけでなく、かなり多くのカスタム コーディングが必要です。
  5. Apache POI へのメモリ改善の貢献に貢献/後援します。POI はオープン ソースであり、自由に利用でき、ボランティアによって完全に管理されています。
于 2013-06-26T14:33:20.227 に答える