找回密码
 立即注册

QQ登录

只需一步,快速开始

Simon.hu 讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2017-9-27 09:43  /   查看:6493  /  回复:5
本帖最后由 Simon.hu 于 2018-7-25 16:20 编辑

我们在设计财务应用的时候,经常会把钱,也就是阿拉伯数字的钱转换成大写的汉字,以防止篡改。
业务的需求和使用很广泛,我们应该如何让活字格完成我们这个需求呢?
我们论坛中一直有一个帖子,地址是:http://gcdn.gcpowertools.com.cn/ ... 9332&extra=page%3D2,如果只是在页面显示没有问题的,但是打印的时候,转的大写会有问题。
这个我给大家教一个比较靠谱的办法。

这里有一段代码,后面告诉大家应该如何使用,不要害怕代码,实际上这段代码,基本上没有什么是需要我们修改的。
  1. function changeMoneyToChinese(money){
  2.     var cnNums = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); //汉字的数字
  3.     var cnIntRadice = new Array("","拾","佰","仟"); //基本单位
  4.     var cnIntUnits = new Array("","万","亿","兆"); //对应整数部分扩展单位
  5.     var cnDecUnits = new Array("角","分","毫","厘"); //对应小数部分单位
  6.     var cnInteger = "整"; //整数金额时后面跟的字符
  7.     var cnIntLast = "元"; //整型完以后的单位
  8.     var maxNum = 999999999999999.9999; //最大处理的数字
  9.    
  10.     var IntegerNum; //金额整数部分
  11.     var DecimalNum; //金额小数部分
  12.     var ChineseStr=""; //输出的中文金额字符串
  13.     var parts; //分离金额后用的数组,预定义
  14.     if( money == "" ){
  15.         return "";
  16.     }
  17.     money = parseFloat(money);
  18.     if( money >= maxNum ){
  19.         $.alert('超出最大处理数字');
  20.         return "";
  21.     }
  22.     if( money == 0 ){
  23.         ChineseStr = cnNums[0]+cnIntLast+cnInteger;
  24.         //document.getElementById("show").value=ChineseStr;
  25.         return ChineseStr;
  26.     }
  27.     money = money.toString(); //转换为字符串
  28.     if( money.indexOf(".") == -1 ){
  29.         IntegerNum = money;
  30.         DecimalNum = '';
  31.     }else{
  32.         parts = money.split(".");
  33.         IntegerNum = parts[0];
  34.         DecimalNum = parts[1].substr(0,4);
  35.     }
  36.     if( parseInt(IntegerNum,10) > 0 ){//获取整型部分转换
  37.         zeroCount = 0;
  38.         IntLen = IntegerNum.length;
  39.         for( i=0;i<IntLen;i++ ){
  40.             n = IntegerNum.substr(i,1);
  41.             p = IntLen - i - 1;
  42.             q = p / 4;
  43.             m = p % 4;
  44.             if( n == "0" ){
  45.                 zeroCount++;
  46.             }else{
  47.                 if( zeroCount > 0 ){
  48.                     ChineseStr += cnNums[0];
  49.                 }
  50.                 zeroCount = 0; //归零
  51.                 ChineseStr += cnNums[parseInt(n)]+cnIntRadice[m];
  52.             }
  53.             if( m==0 && zeroCount<4 ){
  54.                 ChineseStr += cnIntUnits[q];
  55.             }
  56.         }
  57.         ChineseStr += cnIntLast;
  58.         //整型部分处理完毕
  59.     }
  60.     if( DecimalNum!= '' ){//小数部分
  61.         decLen = DecimalNum.length;
  62.         for( i=0; i<decLen; i++ ){
  63.             n = DecimalNum.substr(i,1);
  64.             if( n != '0' ){
  65.                 ChineseStr += cnNums[Number(n)]+cnDecUnits[i];
  66.             }
  67.         }
  68.     }
  69.     if( ChineseStr == '' ){
  70.         ChineseStr += cnNums[0]+cnIntLast+cnInteger;
  71.     }else if( DecimalNum == '' ){
  72.         ChineseStr += cnInteger;
  73.     }
  74.     return ChineseStr;
  75. }
  76. Forguncy.Page.getCell("chinese").setValue(changeMoneyToChinese(Forguncy.Page.getCell("money").getValue()))
复制代码
然后我们要做的就是,给我们输入阿拉伯数字钱的单元格起名叫money,把需要显示的汉字大写的单元格起名叫chinese,如下图所示:
image.png252031554.png
然后,我们复制好上面的代码,按照如下图的步骤粘贴
setting.gif
然后我们运行起来起来的效果就如下图,杠杠的!!!
show.gif
如果你的设计器是,3.0.100.0或者更新版本的活字格,那么你只需要将附件的插件,安装到你的活字格中,然后直接使用moneyCoverter的命令就好了,做如下的设置就可以了:
插件.gif 使用以上两种办法,打印什么的,松松的



下载地址数字转大写金额插件

5 个回复

倒序浏览
serenez
注册会员   /  发表于:2018-3-10 12:06:59
沙发
大佬你好,请问如果我打开页面的时候就已经有一个单元格统计好合计金额了,这时候我用这个方法没办法转换,如果是自己在单元格里面写的话就可以转换,这个问题如何解决?
回复 使用道具 举报
tonyzhu
注册会员   /  发表于:2018-3-10 14:15:57
板凳
可以搞个页面加载命令吧
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-3-14 09:44:46
地板
楼上正解!
回复 使用道具 举报
andy_chen
金牌服务用户   /  发表于:2018-6-25 14:24:17
5#
表統計的加總,好像使用這樣不可以喲!!!
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-6-25 15:10:10
6#
andy_chen 发表于 2018-6-25 14:24
表統計的加總,好像使用這樣不可以喲!!!

没懂你的意思,可以的话,我还是希望你的可以在求助中心里发个帖子描述。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部