R - XLSX:向现有excel表添加一个值

Ber*_*rnd 3 excel r xlsx

我有一个非常直接的问题,我认为这是相当标准的.不幸的是,我找到正确的语法来解决它有些困难.我只想将数据(这里:一个简单的整数)写入现有的excel表.

我想,一个好方法是使用包'xlsx'.

require(xlsx)      # Load the xlsx package
Run Code Online (Sandbox Code Playgroud)

接下来我将不得不加载该文件,并加载所有工作表.

wb <- loadWorkbook("test.excelfile.xls")    # Load the xls file
sheets <- getSheets(wb)                     # load all sheet objects
Run Code Online (Sandbox Code Playgroud)

然后我输入值.这些是产生错误的行.

addDataFrame(data.frame(123), sheets[1])    # Error in addDataFrame(data.frame(123), sheets[1]) :   attempt to apply non-function
addDataFrame(123, sheets[1])                # alternative try, same error
Run Code Online (Sandbox Code Playgroud)

最后,我保存了工作簿.

saveWorkbook(wb, "test.excelfile.xls")   # not checked yet because error occurs in line above
Run Code Online (Sandbox Code Playgroud)

对我来说重要的是已经存在的xls文件没有被销毁.我想保留所有工作表,VBA宏和表单元素.只应从R内更改一些单元格.

非常感谢您的帮助,

马蒂亚斯

Ber*_*rnd 9

最后,我设法做了我想要的.我用谷歌搜索了"Excel连接工具"(参见Carl Witthoft的推荐)并发现一个好的软件包是XLConnect.

以下命令将一个简单的数字写入一个单元格.它们也使VBA宏完好无损.

require(XLConnect)

# Load workbook; create if not existing
wb <- loadWorkbook("MC_Auswertung.xls", create = TRUE)

# write to the workbook
writeWorksheet(wb, 750, sheet="Auswertung",   # write '750' to sheet 'Auswertung' in workbook 'wb' 
           startRow=8, startCol=4,            # specify the cell to write to
           header=FALSE)                      # do not write a header row

# Save workbook
saveWorkbook(wb)
Run Code Online (Sandbox Code Playgroud)

只有一件事让我感到震惊.在操作之前,xls文件有32.953字节.在上面的操作之后它只有28.958字节.因此大量"数据"消失了.我不知道发生了什么?细胞内容仍在那里.图表,背景和边框样式也是如此......

期待你的命令;-)