как писать в xlsx и изменять формат ячеек

После запуска этого кода

library(XLConnect)

template <- loadWorkbook ( filename = "template.xlsx" , create = T )
createSheet ( template , c("sheet1","sheet2") )
# setStyleAction(template,XLC$"STYLE_ACTION.NONE")
Data <- data.frame(
  a = 1:10,
  b = 11:20
)

setDataFormatForType(template, type = XLC$DATA_TYPE.NUMERIC, format = "0.00"  )
# list22$`Brand Equity` <- as.numeric(list22$`Brand Equity`)
# list22$`Purchase Intent` <- as.numeric(list22$`Purchase Intent`)

csHeader <- createCellStyle(template,  name = "header10")
setFillPattern(csHeader, fill = XLC$BORDER.DOUBLE)
setFillForegroundColor(csHeader, color = XLC$COLOR.DARK_RED)

# setCellFormula(object = template, sheet = (paste0("sheet",i)), row = c(2:4),col = c(1:3), formula =  )

setCellStyle(template, sheet = "sheet1", row = 1,
             col = c(1:2),  cellstyle = csHeader)
setCellStyle(template, sheet = "sheet2", row = 1,
             col = c(1:2),  cellstyle = csHeader)

  for (i in 1:2)
  {
                 setColumnWidth(template, sheet = (paste0("sheet",i)), column = c(1:3), width = 15800)
    writeWorksheet ( template , data = Data, sheet = (paste0("sheet",i)), startRow = 1 , startCol = 1 ,
                     header = TRUE )
  }


saveWorkbook ( template )

Я получаю  введите здесь описание изображения

и введите здесь описание изображения

Кажется, это не соответствует моему аргументу о цвете клетки. Любые идеи ? Более того, есть ли способ записать преобразование чисел в проценты? Так, например, 1 будет 100%, 2 - 200% и т. Д.


person quant    schedule 03.01.2017    source источник
comment
Похоже, вам нужно сначала записать данные в ячейки, а затем установить стили ячеек по своему усмотрению. В настоящее время вы красиво стилизуете ячейки, а затем перезаписываете их стилями XLConnect по умолчанию для writeWorksheet(). Другими словами, переместите цикл for вверх сразу после вызова setDataFormat().   -  person Josh O'Brien    schedule 03.01.2017


Ответы (1)


Для преобразования чисел в проценты вы можете написать функцию, подобную этой:

addformatperc<-function(num,roundlevel){
  betternum<-paste(prettyNum(round(num*100,roundlevel),big.mark = ","),"%",sep="")
  return(betternum)
}
#Output
addformatperc(1,0)
[1] "100%"
person krish    schedule 03.01.2017