C# 自定义导出 .NET Core

安装包:Npoi.Mapper Version=4.1.0.0

        /// <summary>
        /// 导出商品信息
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public ActionResult ExportCommodity(string data)
        {
            string filename = DateTime.Now.ToString("yyyyMMddHHmmss") + "商品信息.xlsx";
            List<ExportCommoditySM> exportData = new List<ExportCommoditySM>();
            try
            {
                var model = Newtonsoft.Json.JsonConvert.DeserializeObject<CommodityQuerySM>(data);

                exportData = commodityDAL.ExportCommodity(model, UserInfo.UserID);
                var mapper = new Mapper();
                MemoryStream stream = new MemoryStream();
                //将students集合生成的Excel直接放置到Stream中
                //第一个参数是数据集合,第二个参数是Sheet名称,第三个参数表示是追加数据还是覆盖数据
                if (model.ExportConfig != null && model.ExportConfig.Any())
                {
                    exportDAL.ConfigMapper<ExportCommoditySM>(model.ExportConfig, ref mapper);
                }
                mapper.Put<ExportCommoditySM>(exportData, "商品信息", true);
                mapper.Save(stream, filename);
                return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);
            }
            catch (Exception e)
            {
                return File("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "商品信息.xlsx");
            }
        }

自定义导出方法:

configDetails导出配置数据
public void ConfigMapper<T>(List<tt_scm_exportconfigdetailM> configDetails, ref Mapper mapper)
        {
            try
            {
                if (configDetails == null || !configDetails.Any()) return;

                configDetails = configDetails.OrderBy(t => t.PropertyIndex).ToList();
                
                var ignoreList = configDetails.Where(t => t.IsIgnore == 1).Select(t => t.PropertyCode).Distinct().ToArray();
                var mapList = configDetails.Where(t => t.IsIgnore == 0).ToList();
                if (ignoreList != null && ignoreList.Any())
                {
                    mapper.Ignore<T>(ignoreList);
                }
                foreach (var column in mapList)
                {
                    mapper.Map<T>(column.PropertyIndex, column.PropertyCode, column.PropertyName);
                }
            }
            catch (Exception ex)
            {
            }
        }

实体:

public class tt_scm_exportconfigdetailM
    {
        /// <summary>
        /// 配置明细ID
        /// </summary>
        [Key]
        [Column("ConfigDetailID")]
        public long ConfigDetailID { get; set; }

        /// <summary>
        /// 配置ID
        /// </summary>
        [Column("ConfigID")]
        public long ConfigID { get; set; }

        /// <summary>
        /// 项目ID
        /// </summary>
        [Column("ResourceID")]
        public int ResourceID { get; set; }

        /// <summary>
        /// 属性顺序
        /// </summary>
        [Column("PropertyIndex")]
        public ushort PropertyIndex { get; set; }

        /// <summary>
        /// 属性编码
        /// </summary>
        [Column("PropertyCode")]
        public string PropertyCode { get; set; }

        /// <summary>
        /// 属性名称
        /// </summary>
        [Column("PropertyName")]
        public string PropertyName { get; set; }

        /// <summary>
        /// 忽略
        /// </summary>
        [Column("IsIgnore")]
        public int IsIgnore { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        [Column("CreateBy")]
        public int CreateBy { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        [Column("CreateDate")]
        public DateTime CreateDate { get; set; } = DateTime.Now;

        /// <summary>
        /// 更新人
        /// </summary>
        [Column("UpdateBy")]
        public int UpdateBy { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        [Column("UpdateDate")]
        public DateTime UpdateDate { get; set; }
    }

 

posted @ 2024-01-18 09:24  东方李  阅读(19)  评论(0编辑  收藏  举报