【问题标题】:XLConnect loadWorkbook error - POIXMLException (Java)XLConnect loadWorkbook 错误 - POIXMLException (Java)
【发布时间】:2013-04-05 02:40:06
【问题描述】:

我正在尝试加载包含大量数组计算的大型 Excel 工作簿(.xlsm 格式,~30 mb)。

> wb1 <- loadWorkbook("Mar_SP_20130227_V6.1.xlsm")
Error: POIXMLException (Java): java.lang.reflect.InvocationTargetException

但我能够成功加载仅值/无宏版本的工作簿。

> wb2 <- loadWorkbook("Mar_SP_20130227_V6.1_VALUES_ONLY.xlsx")
> wb2
[1] "Mar_SP_20130227_V6.1_VALUES_ONLY.xlsx"

什么可能导致错误?

从维护者的website 可以看出,包含数组计算或不受支持的公式函数的工作簿可能存在问题,但这看起来不像是同样的错误。

Java 信息​​:

C:\> java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode)

【问题讨论】:

  • 什么是完整的堆栈跟踪? (应该不止这一行)
  • 嗨 Gagravarr,这就是 XLConnect R 包(使用 ApachePOI)向用户(我)公开的全部内容。 java 目录中是否有显示 stracktrace 的日志?

标签: r excel apache-poi xlconnect


【解决方案1】:

事实证明,这个错误的根源是 JVM 内存不足(即使是 options(java.parameters = "-Xmx1024m"))。

我尝试增加内存,但无法让 JVM 占用超过 -Xmx2048m,这仍然不足以加载工作簿。

所以我将 JRE 从 32 位升级到 64 位并运行 64 位 R。

然后我可以设置 -Xmx4096m 并成功加载我的 30mb 工作簿。

【讨论】:

  • 仍然不适合我。我得到“错误:POIXMLException(Java):java.lang.reflect.InvocationTargetException”。我的 XLSB 文件超过 100 MB。 :-/
  • 您将-Xmx4096m 设置为什么?你的电脑有多少内存?
  • 我尝试了不同的设置,我的机器有 24 GB 的 RAM。处理器是 2 GHz Intel Xeon。
猜你喜欢
  • 1970-01-01
  • 2014-12-22
  • 2011-12-19
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
相关资源
最近更新 更多