R – xlsx包 – 如何添加单元格颜色而不更改边框

我试图用布局将表格导出到Excel。 我发现了很多关于xlsx包的信息,以及如何使用它,但是脚本仍然有问题。

我不知道如何用颜色填充单元格,而无需修改以前添加的边框。

作为一个例子,我创build了一个表格(Test.txt),我想为“Mass1”列的单元格赋上一个高于30的值。

这是我写的脚本:

library(xlsx) Test<-read.table("Test.txt",sep="\t", dec=".", header = TRUE) wb<-createWorkbook() sheet <- createSheet(wb, "Sheet 1") cs1 <- CellStyle(wb) + Alignment(horizontal="ALIGN_CENTER", vertical="VERTICAL_CENTER") + Border(color="black", position=c("TOP", "RIGHT" , "LEFT","BOTTOM"),pen=c("BORDER_MEDIUM","BORDER_MEDIUM","BORDER_MEDIUM","BORDER_MEDIUM")) cs2 <- CellStyle(wb) + Border(color="black", position=c("LEFT","RIGHT","TOP", "BOTTOM"),pen=c("BORDER_THIN","BORDER_THIN","BORDER_THIN","BORDER_THIN")) addDataFrame(Test, sheet, row.names = F, colnamesStyle=cs1, colStyle=list(`1`=cs2, `2`=cs2, `3`=cs2)) for(i in 1:nrow(Test) ){ if(Test[i,2]>30){ Row<-getRows(sheet, rowIndex=(i+1)) Cell<-getCells(Row,colIndex = 2) cs3<- CellStyle(wb) + Fill(foregroundColor="lightblue", backgroundColor="lightblue", pattern="SOLID_FOREGROUND") setCellStyle(Cell[[1]], cs3) } } saveWorkbook(wb, "Test.xlsx") 

我的麻烦是,单元格正确的颜色,但底部边框消失。 我知道我可以在我的cs3风格中添加边框,但在我的真实脚本中,我的彩色单元格的底部边界并不总是相同的(有些是Thin而其他是Medium)。

如何考虑先前创build的边框来添加填充颜色而不修改这些边框? 我猜getCellStyle函数可以帮助,但是当我应用这个function时,yhe的结果是一个“正式的类jobjref”,而不是“我的cs3风格的”8列表…

对你来说可能已经太迟了,但我认为你应该replace:

 cs3<- CellStyle(wb) + Fill(foregroundColor="lightblue", backgroundColor="lightblue", pattern="SOLID_FOREGROUND") 

 cs3<- cs2 + Fill(foregroundColor="lightblue", backgroundColor="lightblue", pattern="SOLID_FOREGROUND") 

问候