.Net Core+NPOI快速导入导出Excel
Excel导入导出在开发中是非常常见的,对Excel操作,NPOI使用的是最常用的,但单单用NPOI,要写得代码还是比较多的,可以借助一个Npoi.Mapper库,操作起来就非常简单了,十来行代码就可以对Excel和List互相转换,非常简便。
一、简单封装
首先NuGet引入NPOI和Npoi.Mapper
增加一个ExcelHelper
public class ExcelHelper
{
/// <summary>
/// List转Excel
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">数据</param>
/// <param name="sheetName">表名</param>
/// <param name="overwrite">true,覆盖单元格,false追加内容(list和创建的excel或excel模板)</param>
/// <param name="xlsx">true-xlsx,false-xls</param>
/// <returns>返回文件</returns>
public static MemoryStream ParseListToExcel<T>(List<T> list, string sheetName = "sheet1", bool overwrite = true, bool xlsx = true) where T : class
{
var mapper = new Mapper();
MemoryStream ms = new MemoryStream();
mapper.Save<T>(ms, list, sheetName, overwrite, xlsx);
return ms;
}
/// <summary>
/// Excel转为List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fileStream"></param>
/// <param name="sheetname"></param>
/// <returns></returns>
public static List<T> ParseExcelToList<T>(Stream fileStream, string sheetname = "") where T : class
{
List<T> ModelList = new List<T>();
var mapper = new Mapper(fileStream);
// mapper.FirstRowIndex = 0; //可以设置导入数据是从第几行开始
List<RowInfo<T>> DataList = new List<RowInfo<T>>();
if (!string.IsNullOrEmpty(sheetname))
{
DataList = mapper.Take<T>(sheetname).ToList();
}
else
{
DataList = mapper.Take<T>().ToList();
} if (DataList != null && DataList.Count > 0)
{
foreach (var item in DataList)
{
ModelList.Add(item.Value);
}
}
return ModelList;
}
}
增加一个User Model用作导出,Column指明导出时表头显示的列名
public class User
{
[Column("用户ID")]
public int UserId { get; set; }
[Column("用户名")]
public string UserName { get; set; }
[Column("手机号")]
public string Phone { get; set; }
[Column("邮箱")]
public string Email { get; set; }
}
增加一个FileController控制器
public class FileController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Upload()
{
//用户List
List<User> users = new List<User>();
//获取到上传的文件
var file = Request.Form.Files[0];
//文件转成流
using (var fileStream = file.OpenReadStream())
{
//excel转实体
users = ExcelHelper.ParseExcelToList<User>(fileStream, "Sheet1");
}
return Content(JsonConvert.SerializeObject(users)); }
public IActionResult DownLoad()
{
//生成List
List<User> usrs = new List<User>();
for(int i=1;i<=10;i++)
{
User user = new User()
{
UserId = i,
UserName = "用户" + i,
Phone = "13800000000",
Email = $"user{i}@qq.com"
};
usrs.Add(user);
}
//List转为Excel文件
var fileStream = ExcelHelper.ParseListToExcel(usrs);
return File(fileStream.ToArray(), "application/vnd.ms-excel", "用户信息.xlsx");
}
}
Index的视图
@{
}
<a href="/File/DownLoad">导出excel文件</a>
<form action="/File/Upload" method="post" enctype="multipart/form-data" >
选择excel文件: <input type="file" name="file" />
<input type="submit" value="上传excel" />
</form>
运行后界面
二、导出
导出,点击导出excel文件
打开导出的文件,内容正是生成的列表信息
三、导入
导入,把我们刚下载的用户信息.xlsx上传到后台
可以看到刚才的excel已经转换为User的集合了
这个组件操作Excel和Model的互相转换非常简单快捷,推荐使用。
源码地址:https://github.com/weixiaolong325/ExcelDemo
.Net Core+NPOI快速导入导出Excel的更多相关文章
- asp.net core web的导入导出excel功能
这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...
- ASP.NET Core使用EPPlus导入导出Excel
开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.NET Core中如何使用EPPlus组件导入导出Excel EPPlus: EPPlus是使用Open Office XML格式(xlsx) ...
- asp.net mvc4 easyui datagrid 增删改查分页 导出 先上传后导入 NPOI批量导入 导出EXCEL
效果图 数据库代码 create database CardManage use CardManage create table CardManage ( ID ,) primary key, use ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- .Net core NPOI导入导出Excel
最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- NPOI导入导出Excel
.net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交 代码: 第一步. 在页面里面加入2个隐藏的iframe, 如下 ...
- ASP.NET Core导入导出Excel文件
ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...
- 用NPOI实现导入导出csv、xls、xlsx数据功能
用NPOI实现导入导出csv.xls.xlsx数据功能 直接上代码 首先定义一个接口 如果需要直接操作文件的话,就自己在封装一次 然后定义csv类的具体实现 这个需要引入命名空间LumenWo ...
随机推荐
- Linux内核社区迁移到github?
简介: github是目前最火的开源软件代码托管平台,那么Linux内核社区能否迁移到github上呢?Intel的Daniel Vetter写了一篇关于这个问题的博客,他给出的答案是NO.至于这个答 ...
- [FAQ] CodeMirror5, CodeMirror6 EditorView 获取输入值和设置值的方式
获取值: // CodeMirror5 cm.getValue() 改为使用 // CodeMirror6 cm.state.doc.toString() 设置值: // CodeMirror5 ...
- [Go] 浅谈 Golang struct 与 PHP class 的相似
Golang 中的 struct 与 PHP 的 class 在使用方式上差不多. struct 中的成员可以类比 class 中的属性,struct 中的成员函数可以类比 class 中的方法. 对 ...
- OSI模型之网络层
一.简介 网络层是OSI参考模型中的第三层,同时也是TCP/IP模型的第二层.它介于传输层和数据链路层之间,主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务.网络层传输单位是数据 ...
- vue首次缓存判断
在向本地缓存存值前,判断localstory是否已经存在某个属性,没有就正常存,有就替换掉 created(){ if(localStorage.getItem("属性名") != ...
- vue-cli快速搭建项目的几个文件(二)
=======ggcss样式======== :root{ --bgColor : #d3252a; --pinkColor : #ff4e81; --textColor : ...
- Java开启异步的两种方式
二.Java开启异步的两种方式 1.注解开启:@Async 1.1.配置异步的线程池 必须配置异步线程池,否则异步不会生效. @EnableAsync 注解:指定异步线程池.不指定默认使用:Simpl ...
- 还需要学习JDBC吗?如果需要该了解到怎么样的程度?
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家在工作中还有没有写过JDBC,我在大三 ...
- C语言:通讯录程序设计(多功能)
回顾我的代码shi 通讯录程序设计 主函数 遇到的困难 补充标注说明(一定要看) 效果展示截图 结语 程序源代码 通讯录程序设计 作者前言:该通讯录作品是我大一的C语言结课作业,代码像shi山一样,之 ...
- python计算机视觉学习笔记——PIL库的用法
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 这个 ...