2014-11-14 91 views
2

我有一個Excel工作簿,我想使用R編輯/填充某些特定單元格,而不更改任何格式。編輯Excel工作表的特定單元格

到目前爲止,我已經嘗試過XLConnect包,它似乎可以做我在找的東西,我只是沒有找到辦法做到這一點。

簡單解決問題的方法:

wb <- loadWorkbook("file1.xls") 
data1 <- readWorksheet(wb, "Sheet1", header=TRUE) 

## adding a value to a particular cell: 
data1[11,12] <- 3.2 

## rewriting old data: 
writeWorksheet(wb, data1, "Sheet1") 
saveWorkbook(wb, "new_file1.xls") 

然而,這樣的新的工作簿失去所有以前的格式(合併單元格,公式等)。

有沒有辦法改變某些單元格中的值而不會丟失剩餘工作表的任何格式?

+0

這並沒有太大的意義。如果你不想替換單元格的內容(比如它的公式),那麼......不要這樣做。如果試圖將東西放入合併單元的一部分,那麼拆分合並似乎是可取的。 – 2014-11-14 18:41:40

+0

如果你正在運行Windows,(你顯然已經安裝了Excel),你可以使用'RDCOMClient'軟件包從R中自動化Excel(以及其他任何東西......)。 – jlhoward 2014-11-14 18:48:07

+0

請閱讀軟件包的幫助頁面,並注意'?writeWorksheet'頁面鏈接到'writeNamedRegion'。 (你不希望一個名爲'writeWorksheet'的函數來替換整個工作表嗎?) – 2014-11-14 18:54:20

回答

4

以下是使用R來自動化Excel的示例。

library(RDCOMClient) 
xlApp <- COMCreate("Excel.Application") 
wb <- xlApp[["Workbooks"]]$Open("file.1.xls") 
sheet <- wb$Worksheets("Sheet1") 

# change the value of a single cell 
cell <- sheet$Cells(11,12) 
cell[["Value"]] <- 3.1 

# change the value of a range 
range <- sheet$Range("A1:F1") 
range[["Value"]] <- paste("Col",1:6,sep="-") 

wb$Save()     # save the workbook 
wb$SaveAS("new.file.xls") # save as a new workbook 
xlApp$Quit()    # close Excel 
+1

只需注意:RDCOMClient軟件包僅適用於Windows。這是在評論中,但我想說清楚,所以Unix的人不會浪費時間。 – CephBirk 2016-05-27 22:09:54

+0

如果有彈出窗口詢問我是否想更新鏈接,該怎麼辦?無論如何要點擊R中的這個? – 2017-06-22 20:54:48

2

使用XLC$STYLE_ACTION.NONE風格的動作應該在不改變任何格式添加數據:

data1 <- readWorksheetFromFile("file1.xls", "Sheet1") 

## adding a value to a particular cell: 
data1[11,12] <- 3.2 

## rewriting old data: 
writeWorksheetToFile("file1.xls", data1, "Sheet1", styleAction = XLC$STYLE_ACTION.NONE) 

感謝馬丁的建議,研究這個的意見。

相關問題