万能报表大写金额格式脚本编写
金蝶云社区-天冥异
天冥异
4人赞赏了该文章 1719次浏览 未经作者许可,禁止转载编辑于2018年08月02日 17:14:27

 目前万能报表格式设置不支持数值的大写金额格式,如果有此类需求需要通过编写脚本来支持。
这里我们假设label6是绑定了数据库数值(金额)字段的控件名称,此时需要通过以下步骤添加脚本:
1.万能报表设计器中切换到脚本视图,然后在控件列表中选择“label6”,在事件列表中选择“在打印前”,生成事件代码;
2.复制下面代码到事件中,然后切换到预览视图,观察是否报错;
3.如上一步没有报错,在运行时使用万能报表套打模板,查看大写格式是否生效;

目前大写金额格式支持中英文两种方式,以下代码默认为中文大写金额格式,如果需要切换到英文大写,需要替换下面代码中注释部分

  1. XRLabel bindLabel  = sender as XRLabel;

  2.         string strAmount = bindLabel.Text.Trim();


  3.       Kingdee.BOS.NumFormatTran.FormatTranslate formatTran = new        Kingdee.BOS.NumFormatTran.FormatTranslate();

  4.       formatTran.Resource = strAmount;

  5.         //如需要支持英文大写格式,需要将下面代码替换成为:formatTran.Type = Kingdee.BOS.Util.UpperStyle.EnglishDollarStyle.ToString();

  6.       formatTran.Type = Kingdee.BOS.Util.UpperStyle.ChineseRmbStyle.ToString();

  7.       bindLabel.Text = Kingdee.BOS.Util.FormatTranslateUtil.Translate(formatTran);


复制代码



万能报表大写金额.png 


如果报表需要汇总,比如在在Summary Running 勾选了Report,就会发现大写又变成阿拉伯数字了,这种情况可以如下处理,在汇总的label控件“得到汇总结果”脚本事件里面使用如下代码:
private void label1_SummaryGetResult(object sender, DevExpress.XtraReports.UI.SummaryGetResultEventArgs e)
        {
            decimal decSum = 0, decTmp = 0;
            foreach (object item in e.CalculatedValues)
            {
                if (item != null && decimal.TryParse(item.ToString(), out decTmp))
                {
                    decSum += decTmp;
                }
            }
            Kingdee.BOS.NumFormatTran.FormatTranslate formatTran = new Kingdee.BOS.NumFormatTran.FormatTranslate();
            formatTran.Resource = decSum.ToString();
            formatTran.Type = Kingdee.BOS.Util.UpperStyle.ChineseRmbStyle.ToString();
            e.Result = Kingdee.BOS.Util.FormatTranslateUtil.Translate(formatTran);
            e.Handled = true;
        }

赞 4