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.00numfmt = '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 货币风格 - 有舍入选项吗?的主要内容,如果未能解决你的问题,请参考以下文章

舍入 NSDecimalNumber HalfDown

如何阻止 mysql 舍入浮点值?

数字货币能改变国际货币体系吗?

福汇可以做数字货币吗?

具备货币属性的比特币,会成为一种货币吗?

数字货币将来可以用来缴税吗?