目前万能报表格式设置不支持数值的大写金额格式,如果有此类需求需要通过编写脚本来支持。
这里我们假设label6是绑定了数据库数值(金额)字段的控件名称,此时需要通过以下步骤添加脚本:
1.万能报表设计器中切换到脚本视图,然后在控件列表中选择“label6”,在事件列表中选择“在打印前”,生成事件代码;
2.复制下面代码到事件中,然后切换到预览视图,观察是否报错;
3.如上一步没有报错,在运行时使用万能报表套打模板,查看大写格式是否生效;
目前大写金额格式支持中英文两种方式,以下代码默认为中文大写金额格式,如果需要切换到英文大写,需要替换下面代码中注释部分
XRLabel bindLabel = sender as XRLabel;
string strAmount = bindLabel.Text.Trim();
Kingdee.BOS.NumFormatTran.FormatTranslate formatTran = new Kingdee.BOS.NumFormatTran.FormatTranslate();
formatTran.Resource = strAmount;
//如需要支持英文大写格式,需要将下面代码替换成为:formatTran.Type = Kingdee.BOS.Util.UpperStyle.EnglishDollarStyle.ToString();
formatTran.Type = Kingdee.BOS.Util.UpperStyle.ChineseRmbStyle.ToString();
bindLabel.Text = Kingdee.BOS.Util.FormatTranslateUtil.Translate(formatTran);
复制代码
如果报表需要汇总,比如在在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;
}
推荐阅读