1. 概述编辑
1.1 问题描述
在票据、落款类报表中,为防止随意涂改作假,常需将金额数字转换为大写中文人民币形式,此时可使用 Cnmoney函数,但如果想要直接展示大写金额同时显示小数格式,不展示为人民币形式该如何实现呢,如下图所示:
1.2 解决思路
方法一:若您使用的设计器是 11.0.4 以及之后的版本,可以使用 NUMTO
方法二:
使用NUMTO()、CONCATENATE()、MAPARRAY()等函数组合运用,通过字符转化,替换,拼接等方式,将其转化为中文格式输出即可。
示例: 1234.123 返回值:壹仟贰佰叁拾肆点壹贰叁
示例: 520.1314 返回值:伍佰贰拾点壹叁壹肆
示例: 12.12 返回值:壹拾贰点壹贰
注:NUMTO() 函数不支持小数。
2. 示例编辑
2.1 模板设计
1)新建一张普通报表,右击任意单元格(例如A1单元格),输入数值1234.123,如下图所示:
2)选中 B1 单元格,输入公式:=CONCATENATE(REPLACE(CNMONEY(LEFT(A1, FIND(".", A1) - 1)), "圆整", ""), "点", REPLACE(MAPARRAY(split(mid(A1, FIND(".", A1) + 1, 100), ""), SWITCH(item, '0', "零", '1', "壹", '2', "贰", "3", "叁", '4', "肆", "5", "伍", "6", "陆", '7', "柒", '8', "捌", '9', "玖")), ",", ""))
,如下图所示:
公式说明:
公式以「小数点」分割
公式 | 说明 |
---|---|
REPLACE(CNMONEY(LEFT(A1, FIND(".", A1) - 1)), "圆整", "") | 小数点左边部分通过函数CNMONEY()直接转换为中文。 |
REPLACE(MAPARRAY(split(mid(A1, FIND(".", A1) + 1, 100), ""), SWITCH(item, '0', "零", '1', "壹", '2', "贰", "3", "叁", '4', "肆", "5", "伍", "6", "陆", '7', "柒", '8', "捌", '9', "玖")), ",", "") | 右边部分通过函数MAPARRAY()将具体每一位数字转换成杜对应的大写中文字符。 |
CONCATENATE(REPLACE(CNMONEY(LEFT(A1, FIND(".", A1) - 1)), "圆整", ""), "点", REPLACE(MAPARRAY(split(mid(A1, FIND(".", A1) + 1, 100), ""), SWITCH(item, '0', "零", '1', "壹", '2', "贰", "3", "叁", '4', "肆", "5", "伍", "6", "陆", '7', "柒", '8', "捌", '9', "玖")), ",", "")) | 左右结果通过函数CONCATENATE()拼接起来。 |
2.2 效果预览
2.2.1 PC端
保存模板,选择分页预览,如下图所示:
2.2.2 移动端
3. 模板下载编辑
已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\function\数字转换成中文大写.cpt。
点击下载模板:数字转换成中文大写.cpt