FastReport應用問題

頁小計

欄尾 +  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 "";
      }
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章