千家信息网

C#如何使用NPOI将excel导入到list

发表于:2024-09-29 作者:千家信息网编辑
千家信息网最后更新 2024年09月29日,小编给大家分享一下C#如何使用NPOI将excel导入到list,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下这个是确定是实体类接收/// /// 将excel导入到li
千家信息网最后更新 2024年09月29日C#如何使用NPOI将excel导入到list

小编给大家分享一下C#如何使用NPOI将excel导入到list,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

具体内容如下

这个是确定是实体类接收

/// /// 将excel导入到list/// /// /// Stream 文件流/// 转换的Dictionary:例如 ("昵称","nickname")/// public static List ExcelToList(this Stream fs, Dictionary list) where T : class, new()        {            List ts = new List();            IWorkbook workbook = null;            ISheet sheet = null;            T t = new T();            List listName = new List();            try            {   // 获得此模型的公共属性                var propertys = t.GetType().GetProperties().ToList();                workbook = new HSSFWorkbook(fs);                if (workbook != null)                {                    sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet                    if (sheet != null)                    {                        int rowCount = sheet.LastRowNum;//总行数                        if (rowCount > 0)                        {                            IRow firstRow = sheet.GetRow(0);//第一行                            int cellCount = firstRow.LastCellNum;//列数                            //循环列数                            for (int i = 0; i < cellCount; i++)                            {                                //循环需要转换的值                                foreach (var item in list)                                {                                    if (item.Key.Equals(firstRow.GetCell(i).StringCellValue))                                    {                                        //替换表头                                        firstRow.GetCell(i).SetCellValue(item.Value);                                    }                                }                                //获取已经替换的表头                                var s = firstRow.GetCell(i).StringCellValue;                                //添加到listname                                listName.Add(s);                            }                            for (int i = 1; i <= rowCount; i++)                            {                                t = new T();                                IRow currRow = sheet.GetRow(i);//第i行                                for (int k = 0; k < cellCount; k++)                                {   //取值                                    object value = null;                                    if (currRow.GetCell(k) != null)                                    {                                        firstRow.GetCell(0).SetCellType(CellType.String);                                        currRow.GetCell(k).SetCellType(CellType.String);                                        value = currRow.GetCell(k).StringCellValue;                                    }                                    else                                    {                                        continue;                                    }                                    var Name = string.Empty;                                    //获取第表头的值                                    Name = listName[k];                                    //循环属性                                    foreach (var pi in propertys)                                    {                                        if (pi.Name.Equals(Name))                                        {                                            //获取属性类型名称                                            var s = pi.PropertyType.Name;                                            //如果非空,则赋给对象的属性                                            if (value != DBNull.Value)                                            {                                                //判断属性的类型(可以自行添加)                                                switch (s)                                                {                                                    case "Guid":                                                        pi.SetValue(t, new Guid(value.ToString()), null);                                                        break;                                                    case "Int32":                                                        pi.SetValue(t, value.ToString() == "" ? 0 : Convert.ToInt32(value.ToString()), null);                                                        break;                                                    case "Decimal":                                                        pi.SetValue(t, value.ToString() == "" ? 0 : Convert.ToDecimal(value.ToString()), null);                                                        break;                                                    case "DateTime":                                                        pi.SetValue(t, Convert.ToDateTime(value.ToString()), null);                                                        break;                                                    case "Double":                                                        pi.SetValue(t, value.ToString() == "" ? 0 : Convert.ToDouble(value.ToString()), null);                                                        break;                                                    case "String":                                                        pi.SetValue(t, value, null);                                                        break;                                                    default:                                                        break;                                                }                                            }                                        }                                    }                                }                                //对象添加到泛型集合中                                ts.Add(t);                            }                        }                    }                }                return ts;            }            catch (Exception ex)            {                if (fs != null)                {                    fs.Close();                }                return null;            }        }

调用

 var list = new Dictionary();            list.Add("ID", "TradeAccountId");            list.Add("简介", "Intro");            list.Add("昵称1", "Nickname");            list.Add("限制人数", "SubscribeLimit");            list.Add("模式", "SubscribeMode");            list.Add("收益率", "ProfitRate");            list.Add("收益", "ProfitLossAmount");            list.Add("头像", "Img");            list.Add("平台名称", "Name");            list.Add("用户昵称", "UserNickname");            FileStream fs = new FileStream(@"C:\Users\Administrator\Desktop\Test\Test\bin\Debug\Export\2021-04-27-14-46-36.xls", FileMode.Open);            var list3 = fs.ExcelToList(list);

实体类

[Serializable]public class Res_Signal    {        ///         /// 交易账号ID        ///         public Guid TradeAccountId { get; set; }        ///         /// 交易账号简介        ///         public String Intro { get; set; }        ///         /// 交易账号昵称        ///         public String Nickname { get; set; }        ///         /// 订阅限制值        ///         public Int32 SubscribeLimit { get; set; }        ///         /// 订阅模式 目前都是免费  0免费  1收费        ///         public Int32 SubscribeMode { get; set; }        ///         /// 订阅模式名称        ///         public String SubscribeMode_Des { get; set; }        ///         /// 平台名称        ///         public String Name { get; set; }        ///         /// 头像        ///         public String HeadImg { get; set; }        ///         /// 用户昵称        ///         public String UserNickname { get; set; }        ///         /// 订阅人数        ///         public Int32 SubscribeCount { get; set; }        ///         /// 平台图片        ///         public String Img { get; set; }        ///         /// 收益率        ///         public decimal ProfitRate { get; set; }        ///         /// 总收益        ///         public decimal ProfitLossAmount { get; set; }}

看完了这篇文章,相信你对"C#如何使用NPOI将excel导入到list"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0