通过ApachePOI动态加载数据后,带透视表的Excel崩溃

通过ApachePOI动态加载数据后,带透视表的Excel崩溃,excel,apache-poi,excel-2016,Excel,Apache Poi,Excel 2016,我目前正在开发一个Java应用程序,它使用一个包含透视表的模板excel文件 模板文件还有一个数据表,用于为数据透视表种子。此数据表由java应用程序通过ApachePOI(SXSSF*)API动态加载,数据表包含100K到1M条记录。通过Java应用程序加载数据后,我使用自动刷新选项通过excel透视表重新加载透视表数据 如果我有100K-300K条记录,我的数据透视表将被刷新,但如果我有超过300K条记录,在excel文件打开期间,excel将在“读取数据…”阶段崩溃/挂起 我正在使用exc

我目前正在开发一个Java应用程序,它使用一个包含透视表的模板excel文件

模板文件还有一个数据表,用于为数据透视表种子。此数据表由java应用程序通过ApachePOI(SXSSF*)API动态加载,数据表包含100K到1M条记录。通过Java应用程序加载数据后,我使用自动刷新选项通过excel透视表重新加载透视表数据

如果我有100K-300K条记录,我的数据透视表将被刷新,但如果我有超过300K条记录,在excel文件打开期间,excel将在“读取数据…”阶段崩溃/挂起


我正在使用excel 2016 for mac。

因为您提到了
SXSSF
:默认情况下使用内联字符串而不是共享字符串表。。。,但也知道它会生成与某些客户端不兼容的文档。因此,在写入数据透视表数据时,不使用共享字符串表是有用的,但在读取数据透视表数据时,它可能不会有用,因为每个字符串内容(即使与其他内容相同)都是单独的内容。由于数据透视表倾向于汇总标记相同的数据,这可能会导致问题。我明白了!所以,如果我使用XSSFWorkbook/XSSFSheet pivot刷新性能会更好吗?这里的问题是,在XSSF*程序的情况下,从java程序加载数据需要非常大的堆,并且程序执行需要很长时间。有更好的方法吗?您可以尝试SXSSFWorkbook,但在
公共SXSSFWorkbook(XSSFWorkbook工作簿,int-rowAccessWindowSize,boolean compressTmpFiles,boolean useSharedStringsTable)中设置
useSharedStringsTable
true
。尝试了此选项,但枢轴计算速度仍然较慢。在创建文件时是否有刷新pivot的选项?我相信没有?