【问题标题】:Can't add worksheets to an excel file through my R script无法通过我的 R 脚本将工作表添加到 Excel 文件
【发布时间】:2016-07-17 09:49:47
【问题描述】:

我正在尝试创建一个包含多个电子表格的工作簿,我必须将三个数据框传递给每个工作表。但是,我在创建工作表时遇到问题,出现以下错误:

.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", : 带有签名的方法 createSheet (D)Lorg/apache/poi/ss/usermodel/Sheet;没找到

我使用的是 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)

}

【问题讨论】:

    标签: java r excel


    【解决方案1】:

    xlsx 包正在使用 rJava 从 APACHE POI 项目中调用用 JAVA 编写的函数以获得功能。 创建工作表的函数声明为:

    public XSSFSheet createSheet(java.lang.String sheetname)
    

    这意味着您需要将字符串传递给函数。返回 R,工作表名称必须是字符向量。 @Oleksii-Sh 答案是正确的。

    或者你可以使用:

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

    如果你想把它命名为 sheet1, sheet2 ...

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题。我的解决方案是将工作表名称强制转换为字符。

      所以在你的情况下它可能是

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

      希望它会有所帮助。

      【讨论】:

        【解决方案3】:

        如果没有可重复的示例,就不能肯定,但看起来问题在于您拥有sheet = i 的两行。相反,它应该是sheet = sheet.1

        此外,startRowstartColumn 必须是大于零的整数,但这会导致超出允许范围的错误,而不是未找到的错误。

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

        【讨论】:

        • 试过了,但我仍然遇到同样的问题。认为这可能是我用 i 动态命名它的事实,但这也不是问题
        • 这里仍然在黑暗中拍摄,但startRow=0startColumn=0 应该会导致错误(它们必须是正整数),尽管不是“未找到”错误。
        • 也试过了,没有成功。我认为问题不在于添加数据,而在于创建工作表。该文件已成功创建,但为空。
        • 要查看错误在哪里,您应该为year 设置一个值并在循环外运行每一行代码。该文件是空的,因为您在运行循环之前保存了它。
        • 即使在循环之外我在那个函数上也有问题,所以问题出在哪里
        猜你喜欢
        • 2022-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-07
        • 2013-02-11
        相关资源
        最近更新 更多