C#如何使用NPOI将excel导入到list
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,小编给大家分享一下C#如何使用NPOI将excel导入到list,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下这个是确定是实体类接收/// /// 将excel导入到li
千家信息网最后更新 2025年02月02日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安全错误
数据库的锁怎样保障安全
沈阳壹贰柒软件开发有限公司
软件开发商简介
数据库应用技术思维导图
中山玛尚网络技术有限公司
陈培浩深圳科技互联网
网络安全情况的报告
苏州办公系统软件开发收费报价表
国防科技大学引入互联网
怀旧服服务器一键修复
软件开发找兼职平台
简述网络安全的要素
高大上的网络安全实验室
为什么会去日本搞软件开发
求每门课的平均成绩数据库
重庆服务器迁移费用情况
阿里有多少台服务器支撑它的业务
北京托管服务器云空间
证券公司 软件开发 意义
数据库逻辑量
北京工控软件开发哪家正规
查询db2数据库
怎么看mysql数据库信息
计算机软件开发及销售
虎符网络安全赛道报名
网络安全概论选择题
常州服务器工控机
怎么留住软件开发的人
义乌软件开发哪家好
佛山智能点胶软件开发
平行世界虚拟服务器