將數字轉換成英文金額,支票用。
前些日子同事詢問了能否在Excel上進行數字轉換成英文金額。
如果有這樣的函式,這樣他們列印出報表資料時,可以很方便。不用自己輸入。
原先同事都是利用網路上的轉換器 ,轉換後再貼上。只是這樣比較容易會出錯。
查詢了一下發現 Office Support 有相關的範例跟做法。
完成後,自己想想,未來也有可能在自已的報表上面,也轉換或是顯示相關的資訊,所以紀錄一下。
class NumberToEnglish
{
public string Number2English(string nu)
{
string dollars = "";
string cents = "";
string tp = "";
string[] temp;
string[] tx = { "", "Thousand,", "Million,", "Billion,", "Trillion," };
if (decimal.Parse(nu) == 0) return "Zero Dollars";
else if (decimal.Parse(nu) <= 0) return "Error!! ";
else
{ //處理小數點(通常是兩位)
temp = nu.Split('.');
string strx = temp[1].ToString();
string cent = GetEnglish(strx);
if (!cent.Equals("")) cents = cent + "Cents";
}
//處理整數部分
//先將資料格式化,只取出整數
decimal x = Math.Truncate(decimal.Parse(nu));
//格式化整數部分
temp = x.ToString("#,0").Split(',');
//利用整數,號檢查千、萬、百萬....
int j = temp.Length -1 ;
for (int i = 0; i < temp.Length; i++)
{
tp = tp + GetEnglish(temp[i]);
if (tp != "")
{
tp = tp + tx[j] + " " ;
}
else
{
tp = tp + " ";
}
j = j - 1;
}
if (x == 0 && cents != "") // 如果整數部位= 0 ,且有小數
{
dollars = "Zero Dollars And" + cents + " Only";
}
else
{
if (cents == "")
{
dollars = tp + "Dollars Only";
}
else
{
dollars = tp + "Dollars And" + cents + " Only";
}
}
return dollars;
}
private string GetEnglish(string nu)
{
string x = "";
string str1;
string str2;
string[] tr = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
string[] ty = { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
//處理百位數
str1 = tr[int.Parse(nu) / 100] + " Hundred"; //EX 當315除以100 用於int 會取出3 ..對應到字串陣列,就是 Three
if (str1.Equals(" Hundred")) str1 = ""; //如果結果是空值,表示沒有百分位
//處理十位數
int temp = int.Parse(nu) % 100; // 當315 除100 會剩餘 15
if (temp < 20)
{
str2 = tr[temp]; //取字串陣列
}
else
{
str2 = ty[(temp / 10)].ToString(); //十位數 10/20/30的數量確認
if (str2.Equals(""))
{
str2 = tr[(temp % 10)] ;
}
else
{
str2 = str2 + "-" + tr[(temp % 10)] ; //十位數組成
}
}
if (str1 == "" && str2 == "")
{
x = "";
}
else
{
x = str1 + " " + str2 + " " ;
}
return x;
}
}
水滴可成涓流,涓流可成湖泊大海。
汲取累積知識,將知識堆積成常識;將常識探究成學識;將學識簡化為知識;授人自省。