R使用XLConnect写入MS Excel工作表时的NoSuchMethodError(Java)

我有一个预格式化的Microsoft Excel工作簿,我正在使用它作为模板。 然后我想粘贴我的data.table到R的工作簿,留下的列标题和格式不变。

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 Update 66(64位)。

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

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

同样的Apache Commons项目被添加到它的依赖包XLConnectJars – 这是我认为这个问题可能在于,因为这里可能有一些function弃用。

这个问题已经提出,但在XLConnect GitHub页面上没有解决。

编辑:现在已经在XLConnect GitHub页面上解释了这个问题。 简而言之,最新版本的XLConnect无法使用xlsx包运行,因为它们使用的是不同版本的Apache POI。 你可以在这里find这个职位。 在对xlsx进行更新之前,下面的解决scheme对于快速修复仍然有效。

由于我已经有了用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")`