如何在R中创建Excel工作表中的行?

时间:2017-07-23 06:23:06

标签: r excel xlsx

我尝试使用R在每张Excel文件上添加标题(因为我的所有数据都来自R,我需要在Excel文件中组织它)。为了做到这一点,我使用了xlsx' xlsx'包,我找到了here

#++++++++++++++++++++++++
# Helper function to add titles
#++++++++++++++++++++++++
# - sheet : sheet object to contain the title
# - rowIndex : numeric value indicating the row to 
#contain the title
# - title : the text to use as title
# - titleStyle : style object to use for title
xlsx.addTitle<-function(sheet, rowIndex, title, titleStyle){
rows <-createRow(sheet,rowIndex=rowIndex)
sheetTitle <-createCell(rows, colIndex=1)
setCellValue(sheetTitle[[1,1]], title)
setCellStyle(sheetTitle[[1,1]], titleStyle)
}

程序是: 1)创建一个新行 2)在此行中创建一个单元格以包含标题。 3)设置单元格值。

为了在每张纸上添加标题,我把这个函数放在一个循环中:

# preparing for the loop 
wb <- loadWorkbook(file = "tmp_regioes.xlsx")
sheets <- getSheets(wb)
z <- length(titles)

# creating the style
SUB_TITLE_STYLE <- CellStyle(wb) + 
  Font(wb,  heightInPoints=14, 
       isItalic=TRUE, isBold=FALSE)

# loop
for (i in (1:z)) {

  sheet <- sheets[[i]]
  # Add sub title
  xlsx.addTitle(sheet, rowIndex=1, 
                title= paste0(titles[i]),
                titleStyle = SUB_TITLE_STYLE)
}

但它并没有真正创造新的一排;相反,它会删除我的第一行的内容,其中包含值(我的表的列名)。

只是为了澄清,文件&#34; tmp_regioes.xlsx&#34;是使用函数WriteXLS创建的,因为我需要在同一个文件上保存10个表;例如,这个函数似乎没有选项来保存第二行的表格。

如果有人可以帮助我,我会很高兴。 提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

我认为你有多种选择:

  • 保存数据时,您可以在startRow=2功能中使用参数addDataFrame()
  • 在将标题放在第1行之前,您可以使用rows <-createRow(sheet,rowIndex=1)

下面的代码会创建一个示例xlsx文件,如您从头开始提到的那样。希望这有帮助!

library(xlsx)

df = data.frame(a=c(1,2,3),b=c(2,3,4))
titles = c( "A", "B","C")

wb<- createWorkbook(type = "xlsx")
sheets <- getSheets(wb)
z <- length(titles)

# creating the style
SUB_TITLE_STYLE <- CellStyle(wb) + 
  Font(wb,  heightInPoints=14, 
       isItalic=TRUE, isBold=FALSE)

# loop
for (i in (1:z)) {

  createSheet(wb, sheetName=paste0("Sheet",i))
  sheets <- getSheets(wb)
  sheet <- sheets[[i]]
  # Add sub title

  addDataFrame(df, sheet, col.names = TRUE, row.names = FALSE,
               startRow = 1, startColumn = 1)  
  rows <-createRow(sheet,rowIndex=1)
  xlsx.addTitle(sheet, rowIndex=1, 
                title= paste0(titles[i]),
                titleStyle = SUB_TITLE_STYLE)


}

saveWorkbook(wb, "tmp.regioes.xlsx")