我正在尝试使用Apache Poi 3.14打开一个非常小的电子表格。 电子表格是XLSX,有4个工作表,只包含带边框的阴影列标题(15kB)
我正在使用以下内容访问位于我的java项目中的文件夹中的电子表格(导出时在jar中打包)。
OPCPackage p = OPCPackage.open(getClass().getResourceAsStream(EXPORT_TEMPLATE));
XSSFWorkbook wb = new XSSFWorkbook(p);
当我直接从Eclipse IDE运行时,工作簿几乎立即打开,但是当我导出应用程序并运行jar时,打开工作簿需要15秒。
在我添加代码以从头开始创建工作表之前,我正试图弄清楚如何改善这种性能。
答案 0 :(得分:1)
企业反恶意软件应用程序正在影响工作簿创建过程!
答案 1 :(得分:1)
听起来IDE和您的应用程序中有不同的Classloader实现,而Eclipse之外的随机访问速度很慢。
我会通过将资源完全从jar文件中提取到byte []中来测试这个,例如通过Commons-IO然后才构建它:
byte[] bytes = IOUtils.toByteArray(getClass().getResourceAsStream(EXPORT_TEMPLATE))
XSSFWorkbook wb = new XSSFWorkbook(new ByteArrayInputStream(bytes));