R openxlsx货币样式-是否有舍入选项?

R openxlsx货币样式-是否有舍入选项?,r,excel,xlsx,openxlsx,R,Excel,Xlsx,Openxlsx,openxlsx包中的createStyle函数有一个参数numFmt,可用于创建excel格式,以应用于.xlsx文件中的特定单元格。您可以通过指定numFmt='0'对值进行舍入,也可以通过指定numFmt=“currency”应用货币格式 有没有办法指定一种四舍五入的货币格式? 我尝试了以下方法: 在数据框中舍入值不起作用,因为excel 单元格仍然显示美分,例如,$103.00 numfmt='CURRENCY0'不起作用 如果没有,是否有另一个包允许您指定excel单元格的格式,并

openxlsx
包中的
createStyle
函数有一个参数
numFmt
,可用于创建excel格式,以应用于.xlsx文件中的特定单元格。您可以通过指定
numFmt='0'
对值进行舍入,也可以通过指定
numFmt=“currency”
应用货币格式

有没有办法指定一种四舍五入的货币格式? 我尝试了以下方法:

  • 在数据框中舍入值不起作用,因为excel 单元格仍然显示美分,例如,
    $103.00
  • numfmt='CURRENCY0'
    不起作用
如果没有,是否有另一个包允许您指定excel单元格的格式,并允许对货币格式的单元格进行舍入

编辑:

这给了我想要的(货币格式,带逗号,无美分)

您可以设置
numFmt=“$0”
以获得四舍五入的货币值。例如:

library(openxlsx)

mtcars$hp = 100 * mtcars$hp

wb = createWorkbook()
sht = addWorksheet(wb, "test")
writeData(wb, sht, mtcars)

sty1 = createStyle(numFmt="$0")
sty2 = createStyle(numFmt="$0.00")
sty3 = createStyle(numFmt="$0,0.00")

addStyle(wb, sht, sty1, rows=2:(nrow(mtcars)+1), cols=1)
addStyle(wb, sht, sty2, rows=2:(nrow(mtcars)+1), cols=5)
addStyle(wb, sht, sty3, rows=2:(nrow(mtcars)+1), cols=4)

saveWorkbook(wb, "test.xlsx")
下面是生成的Excel文件的外观:


如果你想用其他货币格式化,你可以试试这个

style=createStyle(numFmt=“[$CURRENCY SYMBOL]#,##0”)

例如


style=createStyle(numFmt=“[$UGX]#,##0”)

谢谢。两个问题:(1)你是怎么知道的?是否有对所有可用格式的解释?(2) 这将删除逗号。如何保持逗号和圆形?我添加了一个带有逗号分隔符的示例。我怎么知道的?我从来没有仔细研究过Excel数字格式的规则,但这些年来,我偶尔需要创建一个自定义格式。因此,我大致了解了它们的工作原理。我在回答中创建的格式看起来就像是“自然”的事情,结果证明是可行的。如果它们不起作用,我会在谷歌上搜索并找出如何调整它们。关于如何创建自己的自定义格式的说明,这里有很多带有示例的网页。谷歌“Excel数字格式”或“Excel自定义数字格式”(不带引号)或类似的东西,你会看到一堆指南。关于自定义数字格式的另一个注意事项是:我应该澄清一下,这些格式不是仅限于
openxlsx
的特殊选项。相反,它们是标准的Microsoft Office格式代码,
openxlsx
只允许您在R中使用它们来格式化写入Excel文件的数据。
library(openxlsx)

mtcars$hp = 100 * mtcars$hp

wb = createWorkbook()
sht = addWorksheet(wb, "test")
writeData(wb, sht, mtcars)

sty1 = createStyle(numFmt="$0")
sty2 = createStyle(numFmt="$0.00")
sty3 = createStyle(numFmt="$0,0.00")

addStyle(wb, sht, sty1, rows=2:(nrow(mtcars)+1), cols=1)
addStyle(wb, sht, sty2, rows=2:(nrow(mtcars)+1), cols=5)
addStyle(wb, sht, sty3, rows=2:(nrow(mtcars)+1), cols=4)

saveWorkbook(wb, "test.xlsx")