使用R将新数据附加到格式化的xlsx工作表

我正在尝试使用xlsx包来帮助清理复杂的数据集,因为有新数据出现。我正在寻找一个如下所示的工作stream程:

  1. 将数据导入R,做一些编码的数据清理。
  2. 将数据写入一个xls文件,将其保存到一个保pipe箱文件夹
  3. 然后,不具备R语言能力的同事(和我自己)可以进行手动数据清理
  4. 随着更多的数据进入,我重复步骤1,然后将其附加到现有的XLS文件, 保留格式 ,如突出显示,注释或粗体。

最后,我很好奇,如果我希望能够在LibreOffice(在我使用的Linux)和Excel(在同事使用的Windows中)中工作,这是相关的。

目前,我无法find将数据追加到现有电子表格的方法,而没有完全重写(并因此丢失任何格式)。

下面是一个我希望能够使用预加载的iris数据集的例子:

 #Import data, do some coded cleaning: data = iris[1:10,] data$Sepal.Ratio = with(data, Sepal.Length/Sepal.Width) data$Sepal.Length = NULL data$Sepal.Width = NULL data$Species = as.character(data$Species) #Write to excel... write.xlsx(data,file="ss.xls") #Manually make some changes system('soffice /path/to/ss.xls') 

(见截图) 在这里输入图像说明在这里输入图像说明

 #Load and clean more data... data = iris[11:20,] data$Sepal.Ratio = with(data, Sepal.Length/Sepal.Width) data$Sepal.Length = NULL data$Sepal.Width = NULL data$Species = as.character(data$Species) #Append it to the existing spreadsheet, while preserving previous formatting ??? 

append=TRUE选项在这里没有多大的帮助,因为它只是简单地将工作表添加到工作簿中。

或者,是否可以将电子表格的格式化读入某种R对象,然后将其应用到重写的文件中,执行如下所示的操作?

 olddat = read.xls('/path/to/ss.xls') formatting <- someFunctionToExtractFormatting('/path/to/ss.xls') newdata = rbind(olddata,data) write.xlsx(newdata,file="ss.xls", FORMATTING=formatting) 

有一些类似的命令可以让我从R中定义格式,但是我找不到可以读取然后重写格式的命令

XLConnect包能够做这种东西。 看看? appendWorksheet ? appendWorksheet

 library(XLConnect) wb <- loadWorkbook( "ss.xlsx" ) appendWorksheet( wb, data, sheet = "iris" ) # iris is the sheet you want to append data to saveWorkbook( wb )