多类型下载-格式刷子的实现

      在很多应用系统中,尤其是电子商务类应用系统,往往都会看到应用提供报表、不同数据格式的文件供用户下载,自然提供下载的文件有多种多样:EXCEL、CSV、TXT、PDF、WORD,甚至有更复杂的数据结构文档;本文主要介绍如何通过统一的数据集合,完成不同类型数据结构文档的转换,实现思路仅供参考!

§ 概述

       主要工作在于适配不同的数据源为统一的数据接口类型,然后遍历数据源,根据传入的原始数据源列名反射获得列值,再顺序构造待下载结构文档。

§ 实现步骤

      

§ 示例代码

            FileProvider provider = new FileProvider();
            provider.DataSource = orders;
            List<ColumnSetting> settings = new List<ColumnSetting>();
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "创建时间", Index = 0, ObjectName = "TradeTime" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "产品名称", Index = 1, ObjectName = "GoodsName" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "订单号", Index = 2, ObjectName = "OrderNo" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "交易号", Index = 3, ObjectName = "TradeNo" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "交易对方", Index = 4, ObjectName = "TargetAccount" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "买/卖", Index = 4, ObjectName = "TradeTypeName" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "金额(元)", Index = 4, ObjectName = "OrderAmount" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "状态", Index = 4, ObjectName = "TradeStatus" });
            settings.Add(new ColumnSetting() { Format = "{0}", HeaderName = "备注", Index = 4, ObjectName = "Memo" });

            string downString = provider.GetSourceFile(settings, cmd);
            DownloadHelper.Instance.Down(cmd, downString, true);

    public class ColumnSetting
    {
        /// <summary>
        /// 列标题
        /// </summary>
        public string HeaderName { get; set; }
        /// <summary>
        /// 对应数据源中的实体名
        /// </summary>
        public string ObjectName { get; set; }
        /// <summary>
        /// 制定格式
        /// </summary>
        public string Format { get; set; }
        public IFormatProvider Provider { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        public int Index { get; set; }
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值