我有一个预先格式化的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与带有XLConnect_0.2-13和rJava_0.9-8的RStudio版本1.0.143配合使用,在具有Microsoft Office 2010的Windows 7操作系统上,Java版本是Java 8 Update 66(64位)。

我们将不胜枚举为什么不起作用的任何想法-我可以从头开始创建工作簿和工作表,因此似乎只是将数据追加到现有工作表中就受到了影响。

最佳答案

我也遇到了同样的问题,发现在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")`

10-06 14:32