openxlsx 货币风格 - 有舍入选项吗?
Posted
技术标签:
【中文标题】openxlsx 货币风格 - 有舍入选项吗?【英文标题】:openxlsx currency style - Is there a rounding option? 【发布时间】:2018-05-18 14:12:41 【问题描述】:openxlsx
包中的 createStyle
函数有一个参数 numFmt
,它允许您创建一个 excel 格式以应用于 .xlsx 文件中的特定单元格。您可以通过指定numFmt = '0'
对值进行舍入,并且可以通过指定numFmt = "CURRENCY"
应用货币格式。
有没有办法指定四舍五入的货币格式? 我尝试了以下方法:
舍入数据框中的值不起作用,因为 excel 单元格仍然显示美分,例如$103.00
。
numfmt = 'CURRENCY0'
不起作用
如果没有,是否有其他软件包允许您指定 Excel 单元格的格式,并允许对货币格式的单元格进行舍入?
编辑:
这给了我想要的东西(货币格式,带逗号,没有美分)
createStyle(numFmt="$0,0")
【问题讨论】:
【参考方案1】:您可以设置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 文件如下所示:
【讨论】:
谢谢。两个问题:(1)你是怎么知道的?在某处是否有对所有可用格式的解释? (2) 这将删除逗号。我怎样才能让逗号保持圆形? 我添加了一个带有逗号分隔符的示例。我怎么知道的?我从未仔细研究过 Excel 数字格式的规则,但多年来我偶尔需要创建自定义格式。结果,我对它们的工作方式有了一个粗略的了解。我在回答中创建的格式似乎是“自然”的事情,而且它们确实有效。如果它们不起作用,我会在谷歌上搜索并弄清楚如何调整它们。 有关如何创建自己的自定义格式的说明,有很多带有示例的网页。谷歌“Excel 数字格式”或“Excel 自定义数字格式”(不带引号)或类似的东西,你会看到一堆指南。 关于自定义数字格式的附加说明:我应该澄清一下,这些格式不是仅限于openxlsx
的特殊选项。相反,它们是标准的 Microsoft Office 格式化代码,openxlsx
只允许您在 R 中使用它们来格式化写入 Excel 文件的数据。【参考方案2】:
如果你想用其他货币格式化,你可以试试这个
style = createStyle(numFmt="[$CURRENCY SYMBOL]#,##0")
例如
style = createStyle(numFmt="[$UGX]#,##0")
【讨论】:
以上是关于openxlsx 货币风格 - 有舍入选项吗?的主要内容,如果未能解决你的问题,请参考以下文章