我在R中加载了一个Excel工作簿,并希望对单元格的矩形范围内的边框进行某种格式设置。
目前,我只能看到以下方法(如下面的代码所示):
有没有更简单的方法来实现这一目标?
如果我在第二个通话中使用stack = TRUE
,我可以跳过各个角落:
library(openxlsx)
wb <- openxlsx::createWorkbook()
openxlsx::addWorksheet(
wb = wb,
sheetName = "Borders"
)
rangeRows = 2:5
rangeCols = 4:8
insideBorders <- openxlsx::createStyle(
border = c("top", "bottom", "left", "right"),
borderStyle = "thin"
)
openxlsx::addStyle(
wb = wb,
sheet = "Borders",
style = insideBorders,
rows = rangeRows,
cols = rangeCols,
gridExpand = TRUE
)
openxlsx::openXL(wb)
## left borders
openxlsx::addStyle(
wb = wb,
sheet = "Borders",
style = openxlsx::createStyle(
border = c("left"),
borderStyle = c("thick")
),
rows = rangeRows,
cols = rangeCols[1],
stack = TRUE,
gridExpand = TRUE
)
##right borders
openxlsx::addStyle(
wb = wb,
sheet = "Borders",
style = openxlsx::createStyle(
border = c("right"),
borderStyle = c("thick")
),
rows = rangeRows,
cols = tail(rangeCols, 1),
stack = TRUE,
gridExpand = TRUE
)
## top borders
openxlsx::addStyle(
wb = wb,
sheet = "Borders",
style = openxlsx::createStyle(
border = c("top"),
borderStyle = c("thick")
),
rows = rangeRows[1],
cols = rangeCols,
stack = TRUE,
gridExpand = TRUE
)
##bottom borders
openxlsx::addStyle(
wb = wb,
sheet = "Borders",
style = openxlsx::createStyle(
border = c("bottom"),
borderStyle = c("thick")
),
rows = tail(rangeRows, 1),
cols = rangeCols,
stack = TRUE,
gridExpand = TRUE
)
openxlsx::openXL(wb)
library(openxlsx)
wb <- openxlsx::createWorkbook()
openxlsx::addWorksheet(
wb = wb,
sheetName = "Borders"
)
rangeRows = 2:5
rangeCols = 4:8
insideBorders <- openxlsx::createStyle(
border = c("top", "bottom", "left", "right"),
borderStyle = "thin"
)
openxlsx::addStyle(
wb = wb,
sheet = "Borders",
style = insideBorders,
rows = rangeRows,
cols = rangeCols,
gridExpand = TRUE
)
openxlsx::openXL(wb)
leftBorders <- openxlsx::createStyle(
border = c("top", "bottom", "left", "right"),
borderStyle = c("thin", "thin", "thick", "thin")
)
openxlsx::addStyle(
wb = wb,
sheet = "Borders",
style = leftBorders,
rows = rangeRows,
cols = rangeCols[1],
gridExpand = TRUE
)
openxlsx::openXL(wb)
答案 0 :(得分:2)
我知道这是一个较旧的问题,但如果有人遇到这个问题,这里有一个函数,它只将边框应用于您传递的行和列参数的外部:
OutsideBorders <-
function(wb_,
sheet_,
rows_,
cols_,
border_col = "black",
border_thickness = "medium") {
left_col = min(cols_)
right_col = max(cols_)
top_row = min(rows_)
bottom_row = max(rows_)
sub_rows <- list(c(bottom_row:top_row),
c(bottom_row:top_row),
top_row,
bottom_row)
sub_cols <- list(left_col,
right_col,
c(left_col:right_col),
c(left_col:right_col))
directions <- list("Left", "Right", "Top", "Bottom")
mapply(function(r_, c_, d) {
temp_style <- createStyle(border = d,
borderColour = border_col,
borderStyle = border_thickness)
addStyle(
wb_,
sheet_,
style = temp_style,
rows = r_,
cols = c_,
gridExpand = TRUE,
stack = TRUE
)
}, sub_rows, sub_cols, directions)
}
# Function call example
OutsideBorders(
wb_,
sheet_ = 1,
rows_ = 1:nrow(test_sheet),
cols_ = 1:ncol(test_sheet)
)