We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

Aspose.Cells for Java heepエラーを回避するコーディング

FileInputStream fStream = new FileInputStream(filePath);
LoadOptions lo = new LoadOptions(FileFormatType.XLSX);
lo.setPassword(PASSWORD);
Workbook workbook = new Workbook(fStream, lo);
Worksheet worksheet = workbook.getWorksheets().get(SHEET_NAME);

上記処理にて、120MByteのXLSXファイルを読み取らせると
Workbookオブジェクトの生成処理において、
「java.lang.OutOfMemoryError: Java heap space」
が発生してしまいます。
※Java起動時におけるJVMの「-Xmx」オプションは許される限りの値を設定しています。

特定のシートに記載されているデータを読み取ることをしたいため、
メモリ上(JVM上)にWorkbookオブジェクトやWorksheetオブジェクトを生成する必要はなく、
保存されているExcelファイルから直接、RowオブジェクトやCellオブジェクトを生成する方法(コーディング)はないでしょうか。

Workbookオブジェクトを生成する必要があるとしても、
極力メモリ使用量を使わないコーディングをご教示いただければと思います。
※極力メモリの使用量を削減し、ヒープエラーを発生させたくありません。

使用バージョン:aspose-cells-17.11-java
OS:Linux

以上、お手数をお掛けいたしますが、ご確認・ご教示をお願いいたします。

@Susumu_Ogura,

詳細をありがとう。

大容量のファイルをロードしているので、処理にはもっとたくさんのメモとCPUが必要です。私はあなたが試着してもらえないと思う:
例えば

1)ファイルを読み込みながら、メモリの設定を試してください。参照用のドキュメントを参照してください:Optimizing Memory Usage while Working with Big Files having Large Datasets

2)さらに、軽量でパフォーマンス指向のモードでワークブック内の巨大なデータセットを(順番に)読み書きするために使用されることも1つのアプローチがあります。これは、LightCells APIと呼び出すイベント駆動型フレームワークです 詳細は、次のドキュメントを参照してください。
Using LightCells API

依然として問題を把握できなかった場合は、テンプレートExcelファイルをお知らせください。すぐに確認します。ファイルを一部のファイル共有サービス(DropBox、Googleドライブなど)にアップロードして、ここでダウンロードリンクを共有することができます。

PS. Aspose.Cells for Java v18.3.xの最新バージョン/修正をお試しください。

回答ありがとうございます。

CPUやメモリを増やす検討を継続して行いますが、

1)ファイルを読み込みながら、メモリの設定を試してください。参照用のドキュメントを参照してください: : Optimizing Memory Usage while Working with Big Files having Large Datasets

上記のパターンで、メモリ使用量の削減と処理時間の短縮が図れたため、
こちらを採用したいと考えています。

@Susumu_Ogura,

メモリオプションがあなたのニーズに合っていることを知っておいていますよ。さるな助けが必要な場合や、その他の問題や質問がある場合は、お気軽にお返事ください。すぐにお手伝いします します。