由于之前在网上查阅一些资料发现总是不能编译通过,不能正常使用,现把能正常使用的代码贴出:

/// <summary>
/// Excel导入帮助类
/// </summary>
public class ImportExcelUtil<T> where T : new()
{
//合法文件扩展名
private static List<string> extName = new List<string>() { ".xls", ".xlsx" };
/// <summary>
/// 导入Excel内容读取到List<T>中
/// </summary>
/// <param name="file">导入Execl文件</param>
/// <param name="sheetName">指定读取excel工作薄sheet的名称</param>
/// <returns>List<T></returns>
public static List<T> InputExcel(IFormFile file, string sheetName = null)
{
//获取文件后缀名
string type = Path.GetExtension(file.FileName);
//判断是否导入合法文件
if(!extName.Contains(type))
{
return null;
}
//转成为文件流
MemoryStream ms = new MemoryStream();
file.CopyTo(ms);
ms.Seek(, SeekOrigin.Begin);
//实例化T数组
List<T> list = new List<T>();
//获取数据
list = InputExcel(ms, sheetName);
return list;
} /// <summary>
/// 将Excel文件内容读取到List<T>中
/// </summary>
/// <param name="fileName">文件完整路径名</param>
/// <param name="sheetName">指定读取excel工作薄sheet的名称</param>
/// <param name="isFirstRowColumn">第一行是否是DataTable的列名:true=是,false=否</param>
/// <returns>List<T></returns>
public static List<T> InputExcel(string fileName, string sheetName = null)
{
if (!File.Exists(fileName))
{
return null;
}
//根据指定路径读取文件
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
//实例化T数组
List<T> list = new List<T>();
//获取数据
list = InputExcel(fs, sheetName); return list;
} /// <summary>
/// 将Excel文件内容读取到List<T>中
/// </summary>
/// <param name="fileStream">文件流</param>
/// <param name="sheetName">指定读取excel工作薄sheet的名称</param>
/// <returns>List<T></returns>
private static List<T> InputExcel(Stream fileStream, string sheetName = null)
{
//创建Excel数据结构
IWorkbook workbook = WorkbookFactory.Create(fileStream);
//如果有指定工作表名称
ISheet sheet = null;
if (!string.IsNullOrEmpty(sheetName))
{
sheet = workbook.GetSheet(sheetName);
//如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheet
if (sheet == null)
{
sheet = workbook.GetSheetAt();
}
}
else
{
//如果没有指定的sheetName,则尝试获取第一个sheet
sheet = workbook.GetSheetAt();
}
//实例化T数组
List<T> list = new List<T>();
if (sheet != null)
{
//一行最后一个cell的编号 即总的列数
IRow cellNum = sheet.GetRow();
int num = cellNum.LastCellNum;
//获取泛型对象T的所有属性
var propertys = typeof(T).GetProperties();
//每行转换为单个T对象
for (int i = ; i <= sheet.LastRowNum; i++)
{
IRow row = sheet.GetRow(i);
var obj = new T();
for (int j = ; j < num; j++)
{
//没有数据的单元格都默认是null
ICell cell = row.GetCell(j);
if (cell != null)
{
var value = row.GetCell(j).ToString();
string str = (propertys[j].PropertyType).FullName;
if (str == "System.String")
{
propertys[j].SetValue(obj, value, null);
}
else if (str == "System.DateTime")
{
DateTime pdt = Convert.ToDateTime(value, CultureInfo.InvariantCulture);
propertys[j].SetValue(obj, pdt, null);
}
else if (str == "System.Boolean")
{
bool pb = Convert.ToBoolean(value);
propertys[j].SetValue(obj, pb, null);
}
else if (str == "System.Int16")
{
short pi16 = Convert.ToInt16(value);
propertys[j].SetValue(obj, pi16, null);
}
else if (str == "System.Int32")
{
int pi32 = Convert.ToInt32(value);
propertys[j].SetValue(obj, pi32, null);
}
else if (str == "System.Int64")
{
long pi64 = Convert.ToInt64(value);
propertys[j].SetValue(obj, pi64, null);
}
else if (str == "System.Byte")
{
byte pb = Convert.ToByte(value);
propertys[j].SetValue(obj, pb, null);
}
else
{
propertys[j].SetValue(obj, null, null);
}
}
}
list.Add(obj);
}
}
return list;
} }

如使用有问题,请留言。希望能帮到你~~~

.Net Core 使用 NPOI 导入Excel的更多相关文章

  1. ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库

    使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...

  2. 使用NPOI导入Excel注意日期格式和数字格式

    //使用NPOI导入Excel public static DataTable importExcelToDataSetUsingNPOI(string FilePath, string fileNa ...

  3. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  4. 使用npoi导入Excel - 带合并单元格--附代码

    之前我们在使用npoi导入excel表格的时候,往往会遇见那种带有合并单元格的数据在导入的时候出现合并为空的问题, 也就是只有第一条有数据,其余均为空白.在网上翻了半天也没有找到合适的解决方案,最后还 ...

  5. NPOI 导入Excel和读取Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  6. NPOI导入excel为datatable (xls xlsx xlsm)

    使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中 http://www.cnblogs.com/songrun/p/3547738.html NPOI 2.0教程 – 自动 ...

  7. NPOI导入excel

    1.引用NPOI: using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.SS.UserModel; 2.导出excel 1 privat ...

  8. .NET Core 使用NPOI读取Excel返回泛型List集合

    我是一名 ASP.NET 程序员,专注于 B/S 项目开发.累计文章阅读量超过一千万,我的博客主页地址:https://www.itsvse.com/blog_xzz.html 网上有很多关于npoi ...

  9. .net core 基于NPOI 的excel导入导出类,支持自定义导出哪些字段,和判断导入是否有失败的记录

    #region 从Excel导入 //用法 //var cellHeader = new Dictionary<string, string>(); //cellHeader.Add(&q ...

随机推荐

  1. vue中,使用element ui的弹窗与echarts之间的问题

    今天项目中有个需求,就是在页面中点击一个图标,弹出一个抽屉式的弹窗(弹窗是element UI的抽屉),弹窗里边是echarts呈现的数据,当我直接用echarts的时候,报错dom没有获取到: 这就 ...

  2. PHP常用字符串函数总结

    PHP语言中的字符串函数也是一个比较易懂的知识.今天我们就为大家总结了将近12种PHP字符串函数,希望对又需要的朋友有所帮助,增加读者朋友的PHP知识库. 1.查找字符位置函数 strpos($str ...

  3. 转:SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)

    开篇介绍 2015年1月1日,新的一年开始之际,本来应该好好做点有意义的事情来跨个年的.结果,老习惯 - 睡觉之前一定要折腾一下电脑,说干就干,给新到的 DELL 电脑装虚机,下载 SQL SERVE ...

  4. Python 命令行之旅:深入 click 之增强功能

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  5. DRF Django REST framework 之 认证组件(五)

    引言 很久很久以前,Web站点只是作为浏览服务器资源(数据)和其他资源的工具,甚少有什么用户交互之类的烦人的事情需要处理,所以,Web站点的开发这根本不关心什么人在什么时候访问了什么资源,不需要记录任 ...

  6. Spring之跨重定向请求传递数据

    摘要 在开发场景中,大部分数据都是使用请求转发(forward)进行传递,而使用重定向(redirect)传递数据可能比较少. 那么问题来了:请求中的数据生命周期存活时间只在一个请求转发(reques ...

  7. 2019 牛客国庆集训派对day1-C Distinct Substrings(exkmp+概率)

    链接:https://ac.nowcoder.com/acm/contest/1099/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  8. CoderForces Round60-(1117A,1117B,1117C题解)

    A. Best Subsegment time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  9. CSUOJ2031-Barareh on Fire(双向BFS)

    Barareh on Fire Submit Page Description The Barareh village is on fire due to the attack of the virt ...

  10. iOS和webppy图片的爱恨情仇

    如果iOS是个好哥哥,webppy一定是一个持家能干的漂亮姑娘