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

 当您需要做一个诸如出入库单的报表时,经常会用到人民币总金额的汇总,并希望打印出来的时候有人民币的大写,所以您需要插入一个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

 

HUST:Eric

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值