无法通过我的R脚本将工作表添加到Excel文件中

我试图用几个电子表格创build一个工作簿,我必须将三个数据框传递给每个工作表。 但是,我在创build表单时遇到了以下错误:

错误.jcall(wb,“Lorg / apache / poi / ss / usermodel / Sheet;”,“createSheet”,:带签名的方法createSheet(D)Lorg / apache / poi / ss / usermodel / Sheet; not found

我使用的是xlsx包,相关的代码部分如下:

wb <- createWorkbook(type="xlsx") saveWorkbook(wb, 'output.xlsx') for (i in year) { sheet.1 <- createSheet(wb, sheetName = i) data.filter <- realdata[realdata$year_ == i,] data.filter <- data.filter[data.filter$month_ >= month[1],] data.filter <- data.filter[data.filter$month_ <= month[4],] ptable_data_usado <- cast(data.filter, mondat ~ BASE, value = "myidx") correl_usado <- cor(ptable_data_usado) addDataFrame(correl_usado, sheet = i, startRow = 0, startColumn = 0) ptable_data_prx <- cast(data.filter, mondat ~ NearestBaseName, value = "myidx") correl_prx <- cor(ptable_data_prx) addDataFrame(correl_prx, sheet = i, startRow = 14, startColumn = 0) } 

我遇到了类似的问题。 我的解决办法是强制表单名称为一个字符。

所以你的情况可能是这样

 sheet.1 <- createSheet(wb, sheetName = as.character(i)) 

希望它会有所帮助。

如果没有一个可重复的例子,不能是肯定的,但看起来问题是你有sheet = i的两行。 相反,它应该是sheet = sheet.1

另外, startRowstartColumn需要是大于零的整数,虽然这会给出一个超出允许范围的错误,而不是一个未发现的错误。

另外, saveWorkbook(wb, 'output.xlsx')应该在循环之后。

xlsx包使用rJava从APACHE POI项目中调用用JAVA编写的函数来实现function。 创build工作表的函数被声明为:

 public XSSFSheet createSheet(java.lang.String sheetname) 

这意味着你需要传递一个string给函数。 返回到R,表名必须是一个字符向量。 @ Oleksii-Sh答案是正确的。

或者你可以使用:

 sheet.1 <- createSheet(wb, sheetName = paste0("sheet", i)) 

如果你想命名它sheet1,sheet2 …