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

时间:2014-08-08 08:14:17

标签: xml r excel formatting data-cleansing

我正在尝试使用xlsx包来帮助清理复杂的数据集,因为新数据会出现。我的目标是实现如下工作流程:

  1. 将数据导入R,进行一些编码数据清理。
  2. 将数据写为xls文件,将其保存到Dropbox文件夹
  3. 非R-literate同事(和我自己)可以进行手动数据清理
  4. 随着更多数据的进入,我重复步骤1,然后将其附加到现有的XLS文件,保留格式,例如突出显示,注释或粗体。
  5. 最后,我很好奇是否相关我希望这可以在LibreOffice(在我使用的Linux中)和Excel(在Windows中,同事使用)中工作。

    目前,我无法找到将数据附加到现有电子表格而无需完全重写(从而丢失任何格式)的方法。

    以下是我希望能够使用预加载的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')
    

    (见截图) enter image description here enter image description here

    #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定义格式,但我找不到可以读取然后重写格式的命令

1 个答案:

答案 0 :(得分:1)

XLConnect包可以做这种事情。看看? appendWorksheet

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