2017-01-03 2 views
1

После выполнения этого кодакак писать в 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) 

я получить enter image description here

и enter image description here

Это, кажется, не передать мои аргументы о цвете клетки. Есть идеи ? Кроме того, есть ли способ написать преобразование чисел в процентах? Так, например, 1 будет 100%, 2 будет 200% и т.д. ...

+0

Похоже, что вам нужно ** сначала ** запишите свои данные в ячейки, а ** затем ** установите стили ячеек, чтобы вы хотели. В настоящее время вы красиво стилизуете ячейки, а затем перезаписываете их стилями по умолчанию XLConnect для 'writeWorksheet()'. Другими словами, переместите свой цикл 'for' вверх сразу после вашего вызова на' setDataFormat() '. –

ответ

0

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

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