You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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)

关键说明

  1. 封装字体为样式:使用create_cell_style()将预先定义的calibri11字体对象包裹成可应用的单元格样式,这样样式可以被多次复用。
  2. 批量应用样式:通过wb$add_style()方法,指定目标工作表、单元格范围(dims参数)和要应用的样式对象,即可完成格式批量设置。如果后续还有其他区域需要使用该字体格式,直接调用add_style传入对应范围即可。

内容的提问来源于stack exchange,提问作者sylvain burgaud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 00:45:53