Convert Number to Words using Web Service in Asp.Net


Introduction.
This sample code describes a Web service through which a client can get the equivalent of a number in words. This can be used in many applications such as accounting packages and invoices.

Requirements.
The following items describe the recommended hardware, software, network infrastructure, skills, prior knowledge, and service packs you will need.

  • Windows 2000 Server
  • IIS version 5.0
  • Internet Explorer 5.5 or 6.0 
To Get The Words For A Given Number.
By using this sample code in an IIS Server, we can have a web service which will
convert a given number into it's equivalent in words. For example, if you are in need of a code which converts a total amount into words, such as, for $ 43.25, if you need the words like Forty three dollars and twenty five cents, you can use this web service.
Here goes the sample code for the same.

******************START******************<%@ WebService Language="VB" Class="NumberToWords" %>Imports SystemImports System.CollectionsImports System.ComponentModelImports System.DataImports System.DiagnosticsImports System.WebImports System.Web.ServicesImports Microsoft.VisualBasic
Public Class NumberToWordsInherits System.Web.Services.WebService
<WebMethod(Description:="Gets the words for a Number", EnableSession:=
False)> _Public Function getWords(ByVal myNumber As String) As StringgetWords = SpellNumber(myNumber)End Function
'Main FunctionPrivate Function SpellNumber(ByVal MyNumber As String)Dim Dollars, Cents, TempDim DecimalPlace, CountDim Place(9) As StringPlace(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
' String representation of amountMyNumber = Convert.ToString(MyNumber)' Position of decimal place 0 if noneDecimalPlace = InStr(MyNumber, ".")'Convert cents and set MyNumber to dollar amountIf DecimalPlace > 0 ThenCents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End IfCount = 1Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & DollarsIf Len(MyNumber) > 3 ThenMyNumber = Left(MyNumber, Len(MyNumber) - 3)ElseMyNumber = ""End IfCount = Count + 1LoopSelect Case DollarsCase ""
Dollars = "zero Dollars"
Case "One"
Dollars = "One Dollar"
Case ElseDollars = Dollars & " Dollars"End SelectSelect Case CentsCase ""
Cents = " and zero Cents"
Case "One"
Cents = " and One Cent"
Case ElseCents = " and " & Cents & " Cents"End SelectSpellNumber = Dollars & CentsEnd Function'Converts a number from 100-999 into textPrivate Function GetHundreds(ByVal MyNumber As String)Dim Result As StringIf Val(MyNumber) = 0 Then Exit FunctionMyNumber = Right("000" & MyNumber, 3)'Convert the hundreds placeIf Mid(MyNumber, 1, 1) <> "0" ThenResult = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "End If'Convert the tens and ones placeIf Mid(MyNumber, 2, 1) <> "0" ThenResult = Result & GetTens(Mid(MyNumber, 2))ElseResult = Result & GetDigit(Mid(MyNumber, 3))End IfGetHundreds = ResultEnd Function
'Converts a number from 10 to 99 into text
Private Function GetTens(ByVal TensText As String)Dim Result As StringResult = "" 'null out the temporary function valueIf Val(Left(TensText, 1)) = 1 Then ' If value between 10-19Select Case Val(TensText)Case 10 : Result = "Ten"Case 11 : Result = "Eleven"Case 12 : Result = "Twelve"Case 13 : Result = "Thirteen"Case 14 : Result = "Fourteen"Case 15 : Result = "Fifteen"Case 16 : Result = "Sixteen"Case 17 : Result = "Seventeen"Case 18 : Result = "Eighteen"Case 19 : Result = "Nineteen"Case ElseEnd SelectElse ' If value between 20-99Select Case Val(Left(TensText, 1))Case 2 : Result = "Twenty "Case 3 : Result = "Thirty "Case 4 : Result = "Forty "Case 5 : Result = "Fifty "Case 6 : Result = "Sixty "Case 7 : Result = "Seventy "Case 8 : Result = "Eighty "Case 9 : Result = "Ninety "Case ElseEnd SelectResult = Result & GetDigit(Right(TensText, 1)) 'Retrieve ones placeEnd IfGetTens = ResultEnd Function
'Converts a number from 1 to 9 into text
Private Function GetDigit(ByVal Digit As String)Select Case Val(Digit)Case 1 : GetDigit = "One"Case 2 : GetDigit = "Two"Case 3 : GetDigit = "Three"Case 4 : GetDigit = "Four"Case 5 : GetDigit = "Five"Case 6 : GetDigit = "Six"Case 7 : GetDigit = "Seven"Case 8 : GetDigit = "Eight"Case 9 : GetDigit = "Nine"Case Else : GetDigit = ""End SelectEnd FunctionEnd Class'***************************END***********************************

For making this as a web service,

  1. Open your Notepad 
  2. Copy the code shown above and paste into the Notepad
  3. Save the file as NumberToWords.asmx into c:\InetPub\wwwroot folder in your System
  4. Run the web service by requesting for the file in the browser. (http://localhost/NumberToWords.asmx)
  5. Check the same by giving different numbers with decimals and invoking the service.

0 comments:

Post a Comment