2017-06-28 68 views
1

我有一个预格式化的Microsoft Excel工作簿,我将其用作模板。然后我想将我的data.table粘贴到R的工作簿中,保留列标题和格式不变。R当使用XLConnect写入MS Excel工作表时写入NoSuchMethodError(Java)

这应该是与包XLConnect可行:

# Load library  
library(XLConnect) 

# Load pre-formatted MS Excel workbook 
wb <- loadWorkbook("Myworkbook.xlsx") 

# Write data.table to existing worksheet excluding column names:  
writeWorksheet(wb, mydt, sheet = "Datasheet1", startRow = 3, startCol = 1, header = FALSE) 

# Save the data to the workbook  
saveWorkbook(wb) 

然而,当我运行此我得到以下Java错误:

Error: NoSuchMethodError (Java): org.apache.poi.ss.usermodel.Cell.setCellType(Lorg/apache/poi/ss/usermodel/CellType;)V

我,使用R版本3.4。 0与RStudio版本1.0.143与XLConnect_0.2-13和rJava_0.9-8,Java版本是在Microsoft Office 2010的Windows 7操作系统上的Java 8更新66(64位)。

任何想法,为什么这可能无法正常工作将不胜感激 - 我可以从头创建工作簿和工作表,所以它似乎只是将数据附加到现有的工作表受到影响。

+0

不知道,但如果你生病的Java错误的,你可以尝试[openxlsx]( https://github.com/awalker89/openxlsx),它不使用它。 – alistaire

+0

谢谢 - 将尝试它,都是因为他们似乎总是会引起问题的依赖于Java的解决方案 –

+1

openxlsx工作得很好 - 将留下此问题以查看是否有人知道java错误,但切换到我的工作流的openxlsx –

回答

1

我也遇到了同样的问题,发现在XLConnect的0.2-13版本中有一个转向Apache POI 3.16。

类似的Apache Commons项目被添加到它的依赖包XLConnectJars - 这是我认为这个问题可能存在的地方,因为这里可能有一些功能弃用。

此问题已提出,但未在XLConnect GitHub页面上解决。

编辑:此问题现已在XLConnect GitHub页面上解释。总之,XLConnect的最新版本无法使用xlsx包运行,因为它们使用的是不同版本的Apache POI。你可以找到帖子here。在对xlsx进行更新之前,下面的解决方案对于快速修复仍然有效。

正如我已经有工作写在XLConnect和由于时间限制,重新编写脚本openxlsx代码,我发现降级到XLConnect/XLConnectJars版本0.2-12修复此问题。

我发现这样做的最快方法是通过卸载XLConnect和XLConnectJars,然后运行以下:

#Assuming devtools is already installed 
library(devtools) 

install_version("XLConnectJars", version = "0.2-12", repos = "http://cran.us.r-project.org") 
install_version("XLConnect", version = "0.2-12", repos = "http://cran.us.r-project.org")`