如何在BI Publisher Desktop的RTF模板中将数字格式化为拼写文字
BI Publisher RTF模板数字转英文拼写实现方案
两种常用实现方式,按你使用的版本选择即可:
方法1:使用原生to_cardinal函数(推荐,适配11g及以上版本)
BI Publisher内置了专门的基数词转换函数,无需额外编写代码,直接修改字段占位符即可:
- 找到你要转换的数字字段占位符,比如原字段为
<?TOTAL_AMOUNT?> - 调整为带转换逻辑的写法,指定英文语言参数:
<?initcap(to_cardinal(TOTAL_AMOUNT,'en'))?> - 转换效果完全匹配你的需求:输入31返回
Thirty One,输入125返回One Hundred Twenty Five。
如果需要处理带小数的金额,拆分整数和小数部分分别转换即可,示例:
<?initcap(to_cardinal(trunc(TOTAL_AMOUNT),'en'))?> Dollars And <?initcap(to_cardinal(round((TOTAL_AMOUNT - trunc(TOTAL_AMOUNT))*100),'en'))?> Cents
输入125.31会输出One Hundred Twenty Five Dollars And Thirty One Cents。
方法2:自定义XSLT模板(兼容11g以下旧版本)
如果你的BI Publisher版本较低不支持to_cardinal函数,可通过自定义转换模板实现:
- 打开RTF模板,点击「BI Publisher」选项卡→「工具」→「编辑模板」进入XSLT编辑界面
- 插入通用的数字转英文拼写XSLT模板片段即可直接复用
- 字段处调用模板传入数字参数即可,调用示例:
<xsl:call-template name="number-to-words"> <xsl:with-param name="number" select="TOTAL_AMOUNT"/> </xsl:call-template>
该方案灵活性更高,可自行调整拼写规则,比如是否添加连字符、是否用and连接百位和十位等。
内容的提问来源于stack exchange,提问作者Zee
相关产品推荐
相关产品推荐

