R - OpenXLSX - 对公式应用格式/设置样式

R - OpenXLSX - Applying formatting / setting a style to a formula

通过 openxlsx 我正在填充一个 Excel 文件,其中包含数据和公式。对于某些单元格,需要格式化,例如百分比,这可以通过将 percentage 分配给 class 或应用样式来完成。但是,这不适用于公式。下面是一个包含 4 个条目的示例:前两个是数据并正确显示为百分比。条目 3 和 4 是公式,条目 3 使用 class 设置格式,而条目 4 使用 addStyle

  # Create workbook
  wb <- createWorkbook()
  # Add new orksheet
  addWorksheet(wb, sheetName = "Test")
  x <- 0.05
  class(x) <- c(class(x), "percentage")
  writeData(wb, sheet = "Test", x = x, startRow = 1, startCol = 1, rowNames = FALSE, colNames = FALSE)
  x <- 0.07
  class(x) <- c(class(x), "percentage")
  writeData(wb, sheet = "Test", x = x, startRow = 2, startCol = 1, rowNames = FALSE, colNames = FALSE)
  x <- "A1+A2"
  class(x) <- c(class(x), "percentage")
  writeFormula(wb, sheet = "Test", x = x, startRow = 3, startCol = 1)
  x <- "A1+A2"
  writeFormula(wb, sheet = "Test", x = x, startRow = 4, startCol = 1)
  number_format <- createStyle(numFmt = openxlsx_getOp("numFmt", "PERCENTAGE"))
  addStyle(wb, sheet = sheet, number_format,
           rows = 4:4, cols = 1:1, gridExpand = FALSE)
  
  # Store the Excel-file
  saveWorkbook(wb, "test_model1.xlsx", overwrite = TRUE)

生成的 WB:

这可能是因为公式被写成了字符。按 enter 后,正确的格式确实出现了。 Display as percentages using openxlsx::addStyle without having to click on cell in Excel也是这种情况,但是没有提供解决方案。

原来问题出在创建样式上:

  number_format <- createStyle(numFmt = openxlsx_getOp("numFmt", "PERCENTAGE"))

应该是

  number_format <- createStyle(numFmt = "percentage")

此外,在某些情况下,先应用样式,然后填写 data/formula。