2013-04-05 11 views
3

我試圖加載一個有大量數組計算的大量Excel工作簿(.xlsm格式,〜30 MB)。XLConnect loadWorkbook錯誤 - POIXMLException(Java)

> 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我可以看到工作簿中可能存在包含數組calc或不受支持的公式函數的問題,但這看起來不是相同的錯誤。

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) 
+0

什麼是完整的堆棧跟蹤? (應該比這一行更多) – Gagravarr 2013-04-05 05:02:13

+0

嗨Gagravarr,這就是XLConnect R軟件包(使用ApachePOI)向用戶(我)展示的所有內容。在java目錄中是否有日誌顯示stracktrace? – 2013-04-05 06:45:54

回答

7

事實證明,這個錯誤的根源是在JVM運行內存(甚至options(java.parameters = "-Xmx1024m"))。

我試圖增加內存,但無法讓JVM佔用超過-Xmx2048m,這仍然不足以加載工作簿。

所以我升級JRE從32位到64位和64跑去位R.

當時我能夠設置-Xmx4096m併成功加載我的30MB工作簿。

+0

仍然不適合我。我得到「錯誤:POIXMLException(Java):java.lang.reflect.InvocationTargetException」。我的XLSB文件超過100 MB。 : -/ – 2013-06-27 20:18:35

+0

你把'-Xmx4096m'設置爲了什麼?你的電腦有多少內存? – 2013-12-18 02:05:21

+0

我試過不同的設置,我的機器有24 GB的RAM。處理器是2 GHz Intel Xeon。 – 2013-12-18 13:29:40