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安全错误
数据库的锁怎样保障安全
连不上数据库服务器主机
网络安全意识形态责任制方案
数据库索引实现方法
服务器可以雷电多开吗
实验6数据库安全管理
只有文档管理的服务器
sql数据库创建
服务器联想和戴尔那个好
数据库dp
查询数据库服务器内存
绍兴网络安全准入控制系统推荐
软件开发工具合肥
软件开发能开发什么条件
国家网络安全产业园管理公司
宝山区品质软件开发服务产品介绍
云南专业回收服务器虚拟主机
软件开发质保金确认收入
计算三级网络技术真题
不错的mysql数据库调优
网络安全电子小报简约
途臻网络技术
京东集团软件开发加薪
惠州手机软件开发工资待遇
数据库 同步更新
数据库中存在的作业
手机怎么看网络安全密匙
网络安全基础考试重点
华为服务器芯片市场
万方数据库期刊查询叙事医学
计算机网络技术双语