頁小計
欄尾 + Data項裏要有 數據源綁定。
大寫人民
private void Cell47_AfterData(object sender, EventArgs e)
{
TableCell nCell= sender as TableCell;
nCell.Text=ToRMB(nCell.Text.ToString());
}
public static string ToRMB(string e)
{
if (String.IsNullOrEmpty(e))
return ToRMB(0);
else
return ToRMB(decimal.Parse(e));
}
public static string ToRMB(decimal e)
{
string eString;//數字的格式化字符串
string eNum;//單數字
int eLen;//格式化字符串長度
System.Text.StringBuilder rmb = new System.Text.StringBuilder();//人民幣大寫
string yuan;//圓
bool seriesZero;//連續0標誌
bool minus = false;//負數標誌
if (e == 0m)
{
return "零圓整";
}
if (e < 0)
{
minus = true;
e = System.Math.Abs(e);
}
if (e > (decimal)999999999999.99)
{
throw new Exception("超過最大範圍");
}
eString = e.ToString("0.00");
eLen = eString.Length;
yuan = (eString.Substring(0, 1) == "0" ? "" : "圓");
eNum = eString.Substring(eLen - 1, 1);//分位
if (eNum == "0")
{
rmb.Append("整");
seriesZero = true;
}
else
{
rmb.Append(stringNum(eNum) + "分");
seriesZero = false;
}
eNum = eString.Substring(eLen - 2, 1);//角位
if (eNum == "0")
{
if (!seriesZero)
{
if (!(eLen == 4 && eString.Substring(0, 1) == "0"))
{
rmb.Insert(0, "零");
}
}
}
else
{
rmb.Insert(0, stringNum(eNum) + "角");
seriesZero = false;
}
if (eLen <= 7)
{
rmb.Insert(0, stringNum4(eString.Substring(0, eLen - 3)) + yuan);
}
else if (eLen <= 11)
{
rmb.Insert(0, stringNum4(eString.Substring(eLen - 7, 4)) + yuan);
rmb.Insert(0, stringNum4(eString.Substring(0, eLen - 7)) + "萬");
}
else if (eLen <= 15)
{
rmb.Insert(0, stringNum4(eString.Substring(eLen - 7, 4)) + yuan);
rmb.Insert(0, stringNum4(eString.Substring(eLen - 11, 4)) + (eString.Substring(eLen - 11, 4) == "0000" ? "" : "萬"));
rmb.Insert(0, stringNum4(eString.Substring(0, eLen - 11)) + "億");
}
if (minus) rmb.Insert(0, "負");
return rmb.ToString();
}
private static string stringNum4(string eNum4)
{
string eNum;
bool seriesZero = false;
System.Text.StringBuilder rmb4 = new System.Text.StringBuilder();
int eLen = eNum4.Length;
eNum = eNum4.Substring(eLen - 1, 1);//個位
if (eNum == "0")
{
seriesZero = true;
}
else
{
rmb4.Append(stringNum(eNum));
}
if (eLen >= 2)//十位
{
eNum = eNum4.Substring(eLen - 2, 1);
if (eNum == "0")
{
if (!seriesZero)
{
rmb4.Insert(0, "零");
seriesZero = true;
}
}
else
{
rmb4.Insert(0, stringNum(eNum) + "拾");
seriesZero = false;
}
}
if (eLen >= 3)//百位
{
eNum = eNum4.Substring(eLen - 3, 1);
if (eNum == "0")
{
if (!seriesZero)
{
rmb4.Insert(0, "零");
seriesZero = true;
}
}
else
{
rmb4.Insert(0, stringNum(eNum) + "佰");
seriesZero = false;
}
}
if (eLen == 4)//千位
{
eNum = eNum4.Substring(0, 1);
if (eNum == "0")
{
if (!seriesZero)
{
rmb4.Insert(0, "零");
seriesZero = true;
}
}
else
{
rmb4.Insert(0, stringNum(eNum) + "仟");
seriesZero = false;
}
}
return rmb4.ToString();
}
private static string stringNum(string eNum)
{
switch (eNum)
{
case "1":
return "壹";
case "2":
return "貳";
case "3":
return "叄";
case "4":
return "肆";
case "5":
return "伍";
case "6":
return "陸";
case "7":
return "柒";
case "8":
return "捌";
case "9":
return "玖";
default:
return "";
}
}