R 编辑Excel工作表的特定单元格

R 编辑Excel工作表的特定单元格,r,excel,xlconnect,R,Excel,Xlconnect,我有一个Excel工作簿,我想在不改变任何格式的情况下,使用R编辑/填充某些特定单元格 到目前为止,我已经尝试了XLConnect软件包,它似乎可以满足我的要求,我只是没有找到一种方法来实现它 我对这个问题的直截了当的态度是: wb <- loadWorkbook("file1.xls") data1 <- readWorksheet(wb, "Sheet1", header=TRUE) ## adding a value to a particular cell: data1[1

我有一个Excel工作簿,我想在不改变任何格式的情况下,使用R编辑/填充某些特定单元格

到目前为止,我已经尝试了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")

wb下面是一个使用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
库(RDCOMClient)

xlApp使用
XLC$STYLE_操作。任何
STYLE操作都不应在不更改任何格式的情况下添加数据:

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)

data1如果您不需要使用公式,您有两种可能的解决方案

您可以使用{xlsx}包:

library(xlsx)
xlsx::write.xlsx(x = head(iris),file = "source3.xlsx",sheetName = "A")
hop3 <- xlsx::loadWorkbook(file = "source3.xlsx")
sheets <- getSheets(hop3)
rows  <- getRows(sheets$A,rowIndex = 2)   # get all the rows
cc <- getCells(rows,colIndex = 3) 
xlsx::setCellValue(cc[[1]],value = "54321")
hop3$setForceFormulaRecalculation(TRUE)
xlsx::saveWorkbook(hop3,file = "output3.xlsx")
库(xlsx)
xlsx::write.xlsx(x=head(iris),file=“source3.xlsx”,sheetName=“A”)

这没有多大意义。如果不想替换单元格的内容(如公式),则。。。不要这样做。如果您试图将内容放入合并单元格的某个部分,则最好将合并拆分。如果您正在运行Windows(显然,您已经安装了Excel),则可以自动化Excel(以及其他任何内容…)使用
RDCOMClient
程序包从R启动。请阅读该程序包的帮助页面,并注意
?writeWorksheet
页面确实链接到
?writeNamedRegion
。(难道您不希望一个名为“writeWorksheet”的函数替换整个工作表吗?@BondedDest我确实想替换单元格的内容,但我想保留剩余工作表的所有以前的格式-与以前相同。比如,如果我有一个模板,里面有我想要填充的空白单元格。通过使用
writeWorksheet
我将所有信息都写为data.frame,因此所有格式(合并单元格、文本大小、列/行大小等)都消失了。我认为有,但您的问题没有示例文件,而且我对构建测试用例的兴趣很低。请注意:RDCOMClient包仅适用于Windows。这是在评论中,但我想说清楚,这样Unix用户就不会浪费时间了。如果有一个弹出窗口问我是否要更新链接怎么办?在R中是否仍有可点击的内容?
library(XLConnect)    
XLConnect::writeWorksheetToFile(file = "source2.xlsx",data = head(iris),sheet="A")
hop2 <- XLConnect::loadWorkbook(file = "source2.xlsx")
createName(hop2, name = "plop", formula = "A!C2")
writeNamedRegion(hop2, 12345, name = "plop", header = FALSE)