Lotus的金额大小写转换

在群里找人要来的,原来打算改成C#,熊找腾讯的同学要了一份C#的,就省点力气了。
Dim Session As New NotesSession
    
Dim db As NotesDatabase
    
Dim doc As NotesDocument    
    
Set db = Session.CurrentDatabase
    
Set doc = Session.DocumentContext    
        
'将数字转换在人民币在写
    Dim  strMoney ,strDec, strInt, cNum ,tmp1 As String
    
Dim subString As String
    
Dim locDec, i, j As Integer 
    
Dim d(4As String                                  '元以下的单位
    Dim t(3As String                                  '万以下的单位
    Dim w(3As String                                  '阶符
    Dim n(9As String                                  '数字
    Dim s(4As String                                  '用以保存临时转化后的值
    
    d(
0= ""
    d(1= "角"
    d(2= "分"
    d(3= "厘"
    d(4= "毫"
    t(0= ""
    t(1= "拾"
    t(2= "佰"
    t(3= "仟"
    w(0= ""
    w(1= "圆"
    w(2= "万"
    w(3= "亿"
    n(0= "零"
    n(1= "壹"
    n(2= "贰"
    n(3= "叁"
    n(4= "肆"
    
    n(
5= "伍"
    n(6= "陆"
    n(7= "柒"
    n(8= "捌"
    n(9= ""     

If Trim(doc.Smoney(0))<>"" Then
        
        strMoney 
= Trim(doc.Smoney(0))
        
        locDec 
= Instr(strMoney, ".")  
        s(
0= ""
        
        
If locDec > 0 Then
            strDec 
= Right(strMoney, Len(strMoney) - locDec)
            
            
If strDec <> "" Then                        '转化小数部分
                For i = 1 To Len(strDec)
                    cNum 
= Left(strDec, 1)
                    strDec 
= Right(strDec, Len(strDec) - 1)
                    
If cNum <> "0" Then
                        s(
0= s(0& n(Val(cNum)) & d(i)
                        
                    
End If
                
Next
            
End If
            strInt 
= Left(strMoney, locDec - 1)         '取整数部分的值
        Else
            strInt 
= strMoney
        
End If
        
        
For i = 0 To Len(strInt) / 4            '每4个数字一组进行转换
            
            s(i 
+ 1= ""
            For j = 0 To 3
                
If strInt <> "" Then
                    cNum 
= Right(strInt, 1)     '取末位数
                    strInt = Left(strInt, Len(strInt) - 1)
                    
If cNum <> "0" Then         '不为零则加单位
                        s(i + 1= n(Val(cNum)) & t(j) & s(i + 1)
                    
Else
                        
                        s(i 
+ 1= n(Val(cNum)) & s(i + 1)
                    
End If
                
End If 
                doc.temp1
=s(i+1)
                                           
'删除重复的"零"
                doc.temp1=Evaluate(|@ReplaceSubstring(temp1;"零零";"")|,doc)
                s(i
+1)=doc.temp1(0)
            
Next 
    
If Right(s(i + 1), 1= "" Then   '删除末位的"零"
                s(i + 1= Left(s(i + 1), Len(s(i + 1)) - 1)
            
End If
            
            
        
Next
        
        Num2Money 
= ""
        For i = 0 To 2 
            
If Trim(s(3 - i)) = "" Then
                temp
=""
            Else 
                temp
=w(3 - i)
            
End If
                                
'连接整数位
            Num2Money = Num2Money & s(3 - i) &  temp
        
Next
        
                                            
'加上"元"
        If Trim(Num2Money) <> "" And Right(Num2Money, 1<> "" Then
            Num2Money 
= Num2Money & "圆"
            
        
End If
                                            
'若无小数则加应加上"整"
        If Trim(s(0)) = "" Then
            Num2Money 
= Num2Money & "正"
            doc.Bmoney=Num2Money
        
Else
            Num2Money 
= Num2Money & s(0)
            doc.Bmoney
=Num2Money
        
End If    
    
Else
        doc.Bmoney
=""
    End If        
    
Call doc.save(True,True)     
posted @ 2010-12-08 09:02  hannover  阅读(419)  评论(0编辑  收藏  举报