数年前から開発者がこの問題を抱えているのを見てきました。私は多くのフォーラムと公式の POI ドキュメントを研究しました。それにもかかわらず、私はまだ答えを見つけていません。だから問題は..次の2つのスニペットを試しました:
Workbook wb = WorkbookFactory.create(new File("spreadsheet.xlsx"));
と
File file = new File("C:\\spreadsheet.xlsx");
OPCPackage opcPackage = OPCPackage.open(file.getAbsolutePath());
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
また、どちらのアプローチでも、単純でかなり小さなスプレッドシートの .xlsx ファイル (200 KB) を処理するのに約 5 ~ 6 分かかります (アプリケーションのメモリが不足していない場合)。
これを修正するにはどうすればよいですか? (Apache POI 3.9 を使用しています)
/*****************************/
次の場所では、処理に時間がかかります。
public class XSSFSheet extends POIXMLDocumentPart implements Sheet{
...
protected void read(InputStream is) throws IOException {
try {
-->>> worksheet = WorksheetDocument.Factory.parse(is).getWorksheet();
} catch (XmlException e){
throw new POIXMLException(e);
}
}
...
これ以上デバッグできません。VisualVM も同じことを言っています..!