2016-03-29 85 views
1

我試圖創建多個電子表格,我有三個數據幀傳遞給每片的工作簿。但是,我有問題,創建表,具有以下錯誤:無法通過我的[R腳本的工作表添加到Excel文件

Error in .jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", : method createSheet with signature (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) 

} 

回答

0

不能爲積極的沒有一個可重複的例子,但它看起來像問題是你有兩條線sheet = i。相反,它應該是sheet = sheet.1

此外,startRowstartColumn需要是大於零的整數,儘管這會給出超出允許範圍的錯誤,而不是一個未發現的錯誤。

此外,saveWorkbook(wb, 'output.xlsx')應該來的循環之後。

+0

試過,但我仍然有同樣的問題。認爲這可能是我用動態命名它的事實,但那不是問題 –

+0

在這裏仍然在黑暗中拍攝,但是'startRow = 0'和'startColumn = 0'應該會導致錯誤(它們必須是正整數),但不是「未找到」錯誤。 – eipi10

+0

試過,沒有成功。我認爲問題不在於添加數據,而在於創建表單。該文件是成功創建的,但爲空。 –

2

我遇到了類似的問題。我的解決方案是將表格名稱強制爲一個字符。

所以你的情況可能是

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

希望這將有助於。

0

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中

...

相關問題