C#如何使用NPOI将excel导入到list
小编给大家分享一下C#如何使用NPOI将excel导入到list,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
具体内容如下
这个是确定是实体类接收
///<summary>///将excel导入到list///</summary>///<typeparamname="T"></typeparam>///<paramname="fs">Stream文件流</param>///<paramname="list">转换的Dictionary:例如("昵称","nickname")</param>///<returns></returns>publicstaticList<T>ExcelToList<T>(thisStreamfs,Dictionary<string,string>list)whereT:class,new(){List<T>ts=newList<T>();IWorkbookworkbook=null;ISheetsheet=null;Tt=newT();List<string>listName=newList<string>();try{//获得此模型的公共属性varpropertys=t.GetType().GetProperties().ToList();workbook=newHSSFWorkbook(fs);if(workbook!=null){sheet=workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheetif(sheet!=null){introwCount=sheet.LastRowNum;//总行数if(rowCount>0){IRowfirstRow=sheet.GetRow(0);//第一行intcellCount=firstRow.LastCellNum;//列数//循环列数for(inti=0;i<cellCount;i++){//循环需要转换的值foreach(variteminlist){if(item.Key.Equals(firstRow.GetCell(i).StringCellValue)){//替换表头firstRow.GetCell(i).SetCellValue(item.Value);}}//获取已经替换的表头vars=firstRow.GetCell(i).StringCellValue;//添加到listnamelistName.Add(s);}for(inti=1;i<=rowCount;i++){t=newT();IRowcurrRow=sheet.GetRow(i);//第i行for(intk=0;k<cellCount;k++){//取值objectvalue=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;}varName=string.Empty;//获取第表头的值Name=listName[k];//循环属性foreach(varpiinpropertys){if(pi.Name.Equals(Name)){//获取属性类型名称vars=pi.PropertyType.Name;//如果非空,则赋给对象的属性if(value!=DBNull.Value){//判断属性的类型(可以自行添加)switch(s){case"Guid":pi.SetValue(t,newGuid(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);}}}}returnts;}catch(Exceptionex){if(fs!=null){fs.Close();}returnnull;}}
调用
varlist=newDictionary<string,string>();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");FileStreamfs=newFileStream(@"C:\Users\Administrator\Desktop\Test\Test\bin\Debug\Export\2021-04-27-14-46-36.xls",FileMode.Open);varlist3=fs.ExcelToList<Res_Signal>(list);
实体类
[Serializable]publicclassRes_Signal{///<summary>///交易账号ID///</summary>publicGuidTradeAccountId{get;set;}///<summary>///交易账号简介///</summary>publicStringIntro{get;set;}///<summary>///交易账号昵称///</summary>publicStringNickname{get;set;}///<summary>///订阅限制值///</summary>publicInt32SubscribeLimit{get;set;}///<summary>///订阅模式目前都是免费0免费1收费///</summary>publicInt32SubscribeMode{get;set;}///<summary>///订阅模式名称///</summary>publicStringSubscribeMode_Des{get;set;}///<summary>///平台名称///</summary>publicStringName{get;set;}///<summary>///头像///</summary>publicStringHeadImg{get;set;}///<summary>///用户昵称///</summary>publicStringUserNickname{get;set;}///<summary>///订阅人数///</summary>publicInt32SubscribeCount{get;set;}///<summary>///平台图片///</summary>publicStringImg{get;set;}///<summary>///收益率///</summary>publicdecimalProfitRate{get;set;}///<summary>///总收益///</summary>publicdecimalProfitLossAmount{get;set;}}
看完了这篇文章,相信你对“C#如何使用NPOI将excel导入到list”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。