0

JDK 1.5 環境で-Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=1000MJVM 引数として apache POI 3.7 を使用しています。

このようにxlsxファイルを読み込むコードを書きましたが、

File file = new File("C:\\D\\Data Book.xlsx");
InputStream inputStream = new FileInputStream(file);
OPCPackage opcPackage = OPCPackage.open(inputStream);
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);

4 行目でアイドル状態になります。JVM引数を削除すると、スローされOutOfMemoryErrorます。私のファイルサイズは6MBです。

4

3 に答える 3

1

ファイルがある場合は、それを渡します。InputStream を使用するには、すべてをメモリにバッファリングする必要があり、スペースを消費します。そのバッファリングを行う必要はないので、しないでください!

POI の最新のナイトリー ビルドを実行している場合は、非常に簡単です。コードは次のようになります。

File file = new File("C:\\D\\Data Book.xlsx");
OPCPackage opcPackage = OPCPackage.open(file);
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);

それ以外は非常に似ています:

File file = new File("C:\\D\\Data Book.xlsx");
OPCPackage opcPackage = OPCPackage.open(file.getAbsolutePath());
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
于 2012-06-19T22:47:53.513 に答える
1

使用OPCPackageが必須でない場合は、直接インスタンス化します。

InputStream inp = new FileInputStream("C:\\D\\Data Book.xlsx");
Workbook wb = WorkbookFactory.create(inp);

POIクイックガイドを見る

于 2012-06-18T19:21:57.463 に答える