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(4) As String '元以下的单位
Dim t(3) As String '万以下的单位
Dim w(3) As String '阶符
Dim n(9) As String '数字
Dim s(4) As 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)
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(4) As String '元以下的单位
Dim t(3) As String '万以下的单位
Dim w(3) As String '阶符
Dim n(9) As String '数字
Dim s(4) As 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)