本帖最后由 Simon.hu 于 2018-7-25 16:20 编辑
我们在设计财务应用的时候,经常会把钱,也就是阿拉伯数字的钱转换成大写的汉字,以防止篡改。
业务的需求和使用很广泛,我们应该如何让活字格完成我们这个需求呢?
我们论坛中一直有一个帖子,地址是:http://gcdn.gcpowertools.com.cn/ ... 9332&extra=page%3D2,如果只是在页面显示没有问题的,但是打印的时候,转的大写会有问题。
这个我给大家教一个比较靠谱的办法。
这里有一段代码,后面告诉大家应该如何使用,不要害怕代码,实际上这段代码,基本上没有什么是需要我们修改的。
- function changeMoneyToChinese(money){
- var cnNums = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); //汉字的数字
- var cnIntRadice = new Array("","拾","佰","仟"); //基本单位
- var cnIntUnits = new Array("","万","亿","兆"); //对应整数部分扩展单位
- var cnDecUnits = new Array("角","分","毫","厘"); //对应小数部分单位
- var cnInteger = "整"; //整数金额时后面跟的字符
- var cnIntLast = "元"; //整型完以后的单位
- var maxNum = 999999999999999.9999; //最大处理的数字
-
- var IntegerNum; //金额整数部分
- var DecimalNum; //金额小数部分
- var ChineseStr=""; //输出的中文金额字符串
- var parts; //分离金额后用的数组,预定义
- if( money == "" ){
- return "";
- }
- money = parseFloat(money);
- if( money >= maxNum ){
- $.alert('超出最大处理数字');
- return "";
- }
- if( money == 0 ){
- ChineseStr = cnNums[0]+cnIntLast+cnInteger;
- //document.getElementById("show").value=ChineseStr;
- return ChineseStr;
- }
- money = money.toString(); //转换为字符串
- if( money.indexOf(".") == -1 ){
- IntegerNum = money;
- DecimalNum = '';
- }else{
- parts = money.split(".");
- IntegerNum = parts[0];
- DecimalNum = parts[1].substr(0,4);
- }
- if( parseInt(IntegerNum,10) > 0 ){//获取整型部分转换
- zeroCount = 0;
- IntLen = IntegerNum.length;
- for( i=0;i<IntLen;i++ ){
- n = IntegerNum.substr(i,1);
- p = IntLen - i - 1;
- q = p / 4;
- m = p % 4;
- if( n == "0" ){
- zeroCount++;
- }else{
- if( zeroCount > 0 ){
- ChineseStr += cnNums[0];
- }
- zeroCount = 0; //归零
- ChineseStr += cnNums[parseInt(n)]+cnIntRadice[m];
- }
- if( m==0 && zeroCount<4 ){
- ChineseStr += cnIntUnits[q];
- }
- }
- ChineseStr += cnIntLast;
- //整型部分处理完毕
- }
- if( DecimalNum!= '' ){//小数部分
- decLen = DecimalNum.length;
- for( i=0; i<decLen; i++ ){
- n = DecimalNum.substr(i,1);
- if( n != '0' ){
- ChineseStr += cnNums[Number(n)]+cnDecUnits[i];
- }
- }
- }
- if( ChineseStr == '' ){
- ChineseStr += cnNums[0]+cnIntLast+cnInteger;
- }else if( DecimalNum == '' ){
- ChineseStr += cnInteger;
- }
- return ChineseStr;
- }
- Forguncy.Page.getCell("chinese").setValue(changeMoneyToChinese(Forguncy.Page.getCell("money").getValue()))
复制代码 然后我们要做的就是,给我们输入阿拉伯数字钱的单元格起名叫money,把需要显示的汉字大写的单元格起名叫chinese,如下图所示:
然后,我们复制好上面的代码,按照如下图的步骤粘贴
然后我们运行起来起来的效果就如下图,杠杠的!!!
如果你的设计器是,3.0.100.0或者更新版本的活字格,那么你只需要将附件的插件,安装到你的活字格中,然后直接使用moneyCoverter的命令就好了,做如下的设置就可以了:
使用以上两种办法,打印什么的,松松的
【下载地址】数字转大写金额插件
|
|