colearendt / xlsx

An R package to interact with Excel files using the Apache POI java library
https://colearendt.github.io/xlsx/
85 stars 32 forks source link

CB.setFill() doesn't seem to work properly #178

Open fciarniello opened 3 years ago

fciarniello commented 3 years ago

Hi I'm approaching the package "xlsx" for R and I discovered that the function "CB.setFill()", to color the background, does not work as it is reported in the manual, where I read: <CB.setFill(cellBlock, fill, rowIndex, colIndex): "rowIndex" is a numeric vector specifiying the rows you want relative to the startRow>.

First of all it doesn't seem to work when I use a numeric vector, it only works with scalar number. But even with a single value, for the backgroundColor, it prints only the default color "lightblue" in the fill object. I tried the lapply to iterate and it goes smooth but dosen't change the color in any way.

My system is: platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 4
minor 0.5
year 2021
month 03
day 31
svn rev 80133
language R
version.string R version 4.0.5 (2021-03-31) nickname Shake and Throw

I show an example of code: ` x <- as.data.frame(state.x77) x$State <- row.names(x) row.names(x) <- NULL x <- x[,c(9,1:8)] tot <- data.frame(State="Total", t(colSums(x[, -1]))) names(tot) <- names(x) x <- rbind(x, tot) rm(tot)

library(xlsx) wb <- createWorkbook(type="xlsx") sheet <- createSheet(wb, sheetName = "US State Facts")

addDataFrame(x, sheet, startRow=1, startColumn=1, row.names=F)

cb <- CellBlock(sheet, startRow=1, startColumn=1, noRows=nrow(x)+1, noColumns=ncol(x), create=F) fill01 <- Fill(backgroundColor = "white") fill02 <- Fill(backgroundColor = "red") CB.setFill(cb, fill01, rowIndex=1, colIndex=1:ncol(x)) CB.setFill(cb, fill02, rowIndex=2, colIndex=1:ncol(x)) CB.setFill(cb, fill02, rowIndex=3:5, colIndex=1:ncol(x)) # It doesn't work with vector parameter

lapply(6:9, function(k){ CB.setFill(cb, fill01, rowIndex=k, colIndex=1:ncol(x)) } ) #even with lapply the color doesn't change!

saveWorkbook(wb, "r-xlsx-report-example.xlsx") `

I don't know if it is a bug or there is something that I didn't understand!

Best regards, Francesco