【发布时间】:2017-01-27 10:06:51
【问题描述】:
我正在尝试使用布局将表格导出到 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")
我的问题是单元格颜色正确但底部边框消失了。我知道我可以在我的 cs3 样式中添加边框,但在我的真实脚本中,我的彩色单元格的底部边框并不总是相同的(有些是细的,有些是中等的)。
如何在不修改这些边框的情况下考虑之前创建的边框来添加填充颜色?我想 getCellStyle 函数可能会有所帮助,但是当我应用此函数时,结果是“正式类 jobjref”,而不是像我的 cs3 样式那样的“8 列表”...
【问题讨论】: