R - xlsx包 - 如何在不改变边框的情况下添加单元格颜色

PBS*_*BSH 5 excel r xlsx

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

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

作为一个例子,我创建了一个表(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")
Run Code Online (Sandbox Code Playgroud)

我的麻烦是细胞正确着色但底部边框消失.我知道我可以在我的cs3样式中添加边框,但在我的真实脚本中,我的彩色单元格的底部边框并不总是相同的(有些是薄的,有些是中等的).

如何在不修改这些边框的情况下考虑先前创建的边框以添加填充颜色?我想getCellStyle函数可以帮助但是当我应用这个函数时,结果是"正式类jobjref"而不是"8列表",因为我的cs3样式...

小智 0

这对你来说可能为时已晚,但我认为你应该更换:

cs3<- CellStyle(wb) + Fill(foregroundColor="lightblue", backgroundColor="lightblue", pattern="SOLID_FOREGROUND") 
Run Code Online (Sandbox Code Playgroud)

cs3<- cs2 + Fill(foregroundColor="lightblue", backgroundColor="lightblue", pattern="SOLID_FOREGROUND") 
Run Code Online (Sandbox Code Playgroud)

问候