表单插件-账表-千分符原创
金蝶云社区-儒雅的大凯文
儒雅的大凯文
5人赞赏了该文章 134次浏览 未经作者许可,禁止转载编辑于2024年10月25日 11:43:35

这两天要开发自定义报表,使用简单账表进行开发。开发过程中,客户发现数值列没有千分符,不利于查看,不直观。然后就针对某一张报表进行开发表单插件,进行数值列千分符的处理。然后发现每个报表(财务报表颇多)都要千分符处理的要求,处理千分符逻辑是一样的。难道每个报表都写一个表单插件?No,显然不符合多年软件Teacher的风格,所以写了一个报表通用的处理千分符的插件代码(思路用到了正则表达式)。给新手小虾米们参考参考。交流QQ:87283202   凯文


   

    /// <summary>

    /// 【账表表单插件】数字显示千分位

    /// </summary>

    [Description("【账表表单插件】数字显示千分位"), HotUpdate]

    public class Ar_YingShou_HuiZong : AbstractSysReportPlugIn

    {

        /// <summary>

        /// 格式化-处理列值

        /// </summary>

        /// <param name="args"></param>

        public override void FormatCellValue(FormatCellValueArgs args)

        {

            base.FormatCellValue(args);

            var reResult = new Regex($@"^-?\d*\.?\d+(?:[eE][-+]?\d+)?$");

            if (args.DataRow[args.Header.Key] != DBNull.Value)

            {

                var strInput = args.DataRow[args.Header.Key].ToString();

                var actionResult = reResult.Match(strInput);

                if (actionResult.Success)

                {

                    args.FormateValue = GetDecimalFormatString(Convert.ToDecimal(args.DataRow[args.Header.Key]), 2);

                }

            }

        }


        /// <summary>

        /// 格式化数字

        /// </summary>

        /// <param name="value">格式化的数值</param>

        /// <param name="digits">小数点位</param>

        /// <returns></returns>

        protected string GetDecimalFormatString(decimal value, int format_digits = 0)

        {

            if (format_digits < 0 || format_digits > 99)

                return ObjectUtils.Object2String(value);

            var format = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();

            format.NumberNegativePattern = 1;

            format.NumberDecimalDigits = format_digits;

            return value.ToString($"N{format_digits}", format);

        }


    }


如果有新手小虾米不知道如何挂表单插件的话,请在社区搜索简单账表二开,有详细的指导步骤。

图标赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!