[水晶报表]人民币大写转换函数

当您需要做一个诸如出入库单的报表时,经常会用到人民币总金额的汇总,并希望打印出来的时候有人民币的大写,所以您需要插入一个sum函数来进行合计,那么合计出来的阿拉伯数字的人民币如何转换成中文大写呢?
以下代码将帮你完成人民币大写的转换,您必须添加一个字符串类型的未邦定字段到您的水晶报表,然后将上面您已经sum好的阿拉伯数字作为一个参数传递到下面代码中的函数。即得到了人民币的大写。

Function ConvertRMB (ls as currency) as string
    dim dx_sz as string
    dim dx_dw as string 
    dim str_int as string 
    dim str_dec as string
    dim dx_str as string 
    dim fu as string
    dim a as string
    dim b as string
    dim c as string
    dim d as string
    dim b2 as string
    dim num_int as number
    dim num_dec as currency
    dim len_int as number
    dim i as number
    dim a_int as number
    dim pp as number

    dx_sz="零壹贰叁肆伍陆柒捌玖"
    dx_dw="万仟佰拾亿仟佰拾万仟佰拾元"
    
    if ls<0 then
        ls=abs(ls)
        fu="负"
    else
        fu=""
    end if

    dx_str=CStr (ls)
    dx_str=Replace (dx_str,"¥","")
    dx_str=replace(dx_str,",","")
    if (ls>0) and (ls<1) then dx_str="0"+dx_str
    
    pp=InStr (dx_str,".")   
    if pp>0 then 
        str_int=mid(dx_str,1,instr(dx_str,".")-1)
    else
        str_int=dx_str
    end if

    num_int=ToNumber (str_int)

    if (ls>0) and (ls<1) then 
        num_dec =  ls*100
    else
        num_dec=(ls-num_int)*100
    end if

    str_dec=totext(num_dec)
    str_dec=replace(str_dec,"¥","")

    len_int=len(str_int)
    dx_str=""
    for i=1 to len_int
        a=mid(str_int,i,1)
        a_int=tonumber(a)
        b=mid(dx_sz,(a_int+1),1)
        c=mid(dx_dw,(13-len_int+i),1)
        if dx_str<>"" then
            d=mid(dx_str,len(dx_str)-1,1)
        else
            d=""
        end if
        if(b="零") and ((d="零") or (b=b2) or (c="元") or (c="万") or (c="亿")) then b=""
        if(a="0") and (c<>"元") and (c<>"万") and (c<>"亿") then c=""
        if((c="元") or (c="万") or (c="亿")) and (d="零") and (a="0") then
            dx_str=mid(dx_str,1,len(dx_str)-2)
            d=mid(dx_str,len(dx_str)-1,2)
            if((c="元") and (d="万"))or((c="万") and (d="亿")) then c=""
        end if
        dx_str=dx_str+b+c
        b2=b
    next i

    '处理金额小于1的情况
    if len(dx_str)<2 then dx_str=""
    if(num_dec<10)and(ls>0) then
        a_int=tonumber(str_dec)
        b=mid(dx_sz,(a_int+1),1)
        if num_dec=0 then dx_str=dx_str+"整"
        if num_dec>0 then dx_str=dx_str+"零"+b+"分"
    end if
    if num_dec>=10 then
        a_int=tonumber(mid(str_dec,1,1))
        a=mid(dx_sz,(a_int+1),1)
        a_int=tonumber(mid(str_dec,2,1))
        b=mid(dx_sz,(a_int+1),1)
        if a<>"零" then a=a+"角"
        if b<>"零" then b=b+"分" else b=""
        dx_str=dx_str+a+b
    end if
    if ls=0 then dx_str="零元整"
    dx_str=fu+dx_str

    dx_str=replace(dx_str,"零亿","亿")
    dx_str=replace(dx_str,"零万","万")
    dx_str=replace(dx_str,"零千","千")
    dx_str=replace(dx_str,"零元","元")


    ConvertRMB =dx_str
End Function


 

该文章转载自网络大本营:http://www.xrss.cn/Dev/DotNet/2007102817215.Html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值