如何使用openxlsx2将自定义字体样式应用到单元格区域?
解决方法
在openxlsx2中,单独的字体对象无法直接应用到单元格,需要先将其封装为单元格样式对象,再通过add_style方法批量应用到指定区域。以下是修改后的完整代码:
library(openxlsx2) # Create workbook wb <- wb_workbook() wb$add_worksheet("Test") # Add data wb$add_data("Test", x = matrix(c("Code","Value_Mt", "Value_Pct", "Value_Evol"), nrow = 1), start_row = 1, start_col = 1, col_names = FALSE) wb$add_data("Test", x = data.frame(Code = c("A", "B", "C"), Value_Mt = c(1000, 0, -1000), Value_Pct = c(0.25, 0, -0.75), Value_Evol = c(0.12, 0, -0.37)), start_row = 2, start_col = 1, col_names = FALSE) # Define ranges a_range <- "B2:B4" another_range <- "C2:D4" # Create a font calibri11 <- create_font( b = FALSE, i = FALSE, color = wb_color(hex = "#FF0000"), name = "Calibri", sz = "11" ) # -------------------------- 修改部分 -------------------------- # 将字体封装为单元格样式 calibri11_style <- create_cell_style(font = calibri11) # 分别应用样式到两个指定区域 wb$add_style(sheet = "Test", dims = a_range, style = calibri11_style) wb$add_style(sheet = "Test", dims = another_range, style = calibri11_style) # ------------------------------------------------------------- wb$save(file = "wb.xlsx", overwrite = TRUE)
关键说明
- 封装字体为样式:使用
create_cell_style()将预先定义的calibri11字体对象包裹成可应用的单元格样式,这样样式可以被多次复用。 - 批量应用样式:通过
wb$add_style()方法,指定目标工作表、单元格范围(dims参数)和要应用的样式对象,即可完成格式批量设置。如果后续还有其他区域需要使用该字体格式,直接调用add_style传入对应范围即可。
内容的提问来源于stack exchange,提问作者sylvain burgaud
相关产品推荐
相关产品推荐

