无法通过我的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
。
另外, startRow
和startColumn
需要是大于零的整数,虽然这会给出一个超出允许范围的错误,而不是一个未发现的错误。
另外, 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 …