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"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
属性
昵称
名称
收益
循环
订阅
平台
模式
表头
账号
交易
C#
人数
头像
实体
对象
收益率
用户
简介
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2018年合肥网络安全大会
软件开发部门月报模板
网络安全如何教育
学软件开发用软件
数据库表明与安全防护
杭州12年软件开发工资水平
黑色沙漠季节服务器时间
安装ug显示服务器无效
路云天网络安全研究院孔勇
网络安全知识 新疆
太原软件开发联系电话
学网络技术短期培训有哪些
网约车软件开发前景
软件开发接单网站有哪些
网络安全应急响应招聘
2017计算机网络技术试题
开源服务器源码
金融信息网络安全有限公司
数据库可以永久保存数据吗
常州营销服务管理软件开发
服务器分期
税务uk访问数据库错误是为什么
mssql数据库数据量
斯沃软件链接服务器失败
数据库安全评估系统有哪些
软件开发学些什么
杭州crm软件开发团队
厦门由客互联网科技
暴风影音5连接服务器失败怎么办
数据库表的关系是什么