2012-03-30 29 views
4

下面是我使用的代碼。使用R的xlsx包將公式傳遞到xls文件

library(xlsx) 
wb <- loadWorkbook('D:/test.xls') 
sheets <- getSheets(wb) 
sheet <- sheets[['my_sheet']] 

addDataFrame(x = ds, sheet = sheet, row.names = FALSE, col.names = FALSE, startRow=3, startColumn=1) 

cell.1 <- createCell(rows[1], colIndex=34)[[1,1]] 
setCellValue(cell.1, "=A32*B33") 
saveWorkbook(wb, 'D:/test.xls') 

添加數據幀可以毫無問題地工作。但是,當打開xls文件時,我在單元格A34中看到了text「= A32 * B33」(爲了使公式正常工作,需要按下額外的ENTER鍵)。你能幫我正確輸入一個配方嗎?

+0

你不只是需要打F9(打開表單計算?)我通常通過rcom這樣的東西,它可以讓你更多的控制這種東西。 – Hansi 2012-03-30 13:34:14

+0

我試過F9的替代方案,但似乎沒有工作。 – gvrocha 2015-06-30 15:42:46

回答

6

過去我已經使用包xlsx,儘管有很大的希望,但是發現它嚴重缺乏功能和易用性。當我在一分鐘前搜索軟件包手冊時,似乎不可能做你想做的事情。

好消息是替代在包的形式XLConnectXLConnect使用與xlsx相同的Java代碼(來自Apache POI項目),因此在操作系統之間仍然具有相同的高級別互操作性。

XLConnect有一個功能,可以做你需要的東西:setCellFormula()

參考文獻:


PS。你能告訴我喜歡這個包嗎?

+0

我也會說我喜歡它,如果你告訴我如何使用R1C1參考風格傳遞一個公式。我給出的公式是「RC [-27] *(RC [-1] + RC [-3] + RC [-5])」,我得到了錯誤:FormulaParseException(Java):指定命名範圍'RC'不存在於當前的工作簿中。 – 2012-03-30 12:40:12

+0

+1我對XLConnect的運氣比xlsx多得多。 – joran 2012-03-30 14:35:10

-1

另一種替代方法是輸出csv文件而不是xls,然後用excel打開它。

相關問題