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

使用openxlsx设置丹麦式点号千分位分隔符的技术问题

解决openxlsx设置丹麦数字格式(点号千分位)的问题

我正在用R的openxlsx包给Excel文件添加新工作表,丹麦地区要求点号作为千分位分隔符,希望输出的.xlsx文件能按这个格式显示数字,同时保留原有数字格式。

我的代码如下:

library(openxlsx)

file <- file.path("S:", "test.xlsx")

df <- data.frame(A = c(1, 200, -3000, 40000, 500000, 6000000),
                 B = c(0.0101, 1.0245, 0.9876, 0.6512, 0.0101, 1.0245))

wb <- loadWorkbook(file)

sht <- addWorksheet(wb, sheetName = "newSheet")

head_st <- createStyle(textDecoration = "Bold")
number_st <- createStyle(numFmt = "#.##0")
pct_st <- createStyle(numFmt = "PERCENTAGE")

writeData(wb, sht, df, headerStyle = head_st)

addStyle(wb, sht, style = number_st, 
         cols=c(1), rows = 2:(nrow(df) + 1), gridExpand = TRUE)
addStyle(wb, sht, style = pct_st, 
         cols=c(2), rows = 2:(nrow(df) + 1), gridExpand = TRUE)

saveWorkbook(wb, file, overwrite = TRUE)

目前的问题是:Excel输出里百分比格式正常(用逗号作小数分隔符),但数字格式完全不符合预期,千分位没有用点号分隔。

我已经尝试了这些方法,但都没解决:

  • 参考Excel的数字格式定义,改用"#.##0;-#.##0"作为numFmt参数,无效
  • 尝试使用Excel自定义格式的完整字符串,但执行代码时直接报错:
> number_st <- createStyle(numFmt = "_-* #.##0_-;-* #.##0_-;_-* \"-\"??_-;_-@_-")
Error in "_-* #.##0_-;-* #.##0_-;_-* " - "??_-;_-@_-" : 
  non-numeric argument to binary operator 

有没有可行的解决思路?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:09:52