ASP.NET Core使用EPPlus导入导出Excel
开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.NET Core中如何使用EPPlus组件导入导出Excel
EPPlus:
EPPlus是使用Open Office XML格式(xlsx)读写Excel 2007/2010文件的 .net 开发库,能读写Excel 2007/2010文件,可以运行在Windows, Linux和Mac,官网地址:https://archive.codeplex.com/
在.net core中还可以使用NOPI操作Excel,在此不做介绍。
使用EPPlus操作Excel:
1、引入EPPlus包,在程序包管理控制台中执行命令安装依赖包:
PM> Install-Package EPPlus.Core -Version 1.5.
2、导出Excel
①使用EF Core操作数据库时,数据源用List集合方便导出。
②在控制器的构造函数中注入 IHostingEnvironment 来获取网站根目录路径,以便设置导出Excel文件路径。
public IActionResult OutputExcel()
2 {
3 //数据源为list集合
4 var query = (from u in _context.UserInfo
select new
{
u.UId,
u.UName,
u.UPws,
u.UEmail,
u.UTel
}).ToList();
//指定导出Excel文件路径
string sWebRootFolder = _hostingEnv.WebRootPath;
//文件名
string sFileName = $@"测试导出{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx";
//将两个字符串合并为一个路径
var path = Path.Combine(sWebRootFolder, sFileName);
//创建文件对象
FileInfo file = new FileInfo(path);
//如果文件存在
if (file.Exists)
{
//删除文件
file.Delete();
//重新创建文件对象
file = new FileInfo(path);
}
//创建ExcelPackage对象
using (ExcelPackage package = new ExcelPackage(file))
{
//添加新工作表到工作簿
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("UserInfo");
//将list集合加载到工作表中,打印表头
worksheet.Cells.LoadFromCollection(query, true);
//保存Excel
package.Save();
}//释放资源
return View("Index");
40 }
ExcelPackage类是EPPlus的入口类,解析一个Excel文件,生成ExcelWorkbook对象来表示一个Excel。
ExcelPackage类实现了IDisposable接口,可以使用using进行对象释放。
ExcelWorksheet类可设置Excel表格样式,但设置Excel表格样式会增加内存负担,导出速度可能会变慢。
3、导入Excel
导入,导出Excel方法,博主都使用Ajax请求,在导入Excel时,将文件路径传入后台时出现fackpath路径问题,后直接先将导入的文件保存在程序根目录中,然后再导入程序根目录中的文件
JavaScript代码:
$("#IExcel").click(function () {
var formdata = new FormData();//通过FormData构造函数创建一个空对象
formdata.append('file', $("#Import")[0].files[0]);//通过append()方法来追加数据
$.ajax({
type: "post",
url: "/Main/ImportExcel",
contentType: false,//不要去设置Content-Type请求头
processData: false,//不要去处理发送的数据
data: formdata,
success: function (data) {
alert(data.message);
},
error: function () {
alert("导入失败!");
}
})
17 })
在使用FormData对象传输数据时,须设置浏览器不要去处理发送的数据和设置Content-Type请求头,否则JS将报错:Uncaught TypeError: Illegal invocation
C#代码:
public IActionResult ImportExcel()
2 {
try
{
//先将要导入的文件上传到程序根目录
//获取前端传过来的文件
var files = Request.Form.Files;
var filePath = "";
foreach (var item in files)
{
//获取文件名
filePath = item.FileName;
//指定文件上传路径
filePath = _hostingEnv.WebRootPath + $@"\{filePath}";
//创建文件流
using (FileStream fs = System.IO.File.Create(filePath))
{
//将上载文件的内容复制到目标流
item.CopyTo(fs);
//清除此流的缓冲区并导致将任何缓冲数据写入
fs.Flush();
}
}
//创建文件对象
FileInfo file = new FileInfo(filePath);
if (file != null)
{
//创建ExcelPackage对象
using (ExcelPackage package = new ExcelPackage(file))
{
//访问Excel表中的第一张表
ExcelWorksheet worksheet = package.Workbook.Worksheets[];
//获取表格的行数
int rowCount = worksheet.Dimension.Rows;
//获取表格的列数
int ColCount = worksheet.Dimension.Columns;
var user = new List<UserInfo>();
for (int row = ; row <= rowCount; row++)
{
UserInfo userinfo = new UserInfo();
//指定行列赋值
userinfo.UName = worksheet.Cells[row, ].Value.ToString();
userinfo.UPws = worksheet.Cells[row, ].Value.ToString();
userinfo.UEmail = worksheet.Cells[row, ].Value.ToString();
userinfo.UTel = worksheet.Cells[row, ].Value.ToString();
//将数据保存到实体中
_context.UserInfo.Add(userinfo);
_context.SaveChanges();
}
return Json(new { message = "导入成功!" });
}
}
return null;
}
catch (Exception ex)
{
return Json(new { message = "导入失败!" + ex });
}
59 }
ExcelWorkbook类表示了一个Excel文件,其Worksheets属性对应着Excel的各个Sheet。Worksheets属性会自动创建,不用担心空指针异常,但是其Count可能为0。注意:在获取具体的Sheet时,索引号从1开始。
End!
ASP.NET Core使用EPPlus导入导出Excel的更多相关文章
- asp.net core web的导入导出excel功能
这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...
- .NET CORE webapi epplus 导入导出 (实习第一个月的笔记)
最近有个需求就是网页表格里面的数据导出到excel 于是从各位前辈的博客园搜了搜demo 大部分非为两类 都是用的插件NPOI和Eppluse ,因此在这里就介绍Eppluse 用法,还有就是在博 ...
- ASP.Net MVC利用NPOI导入导出Excel
因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- ASP.NET Core导入导出Excel文件
ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...
- ASP.NET Core使用EPPlus操作Excel
1.前言 本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用 2.使用 新建一个AS ...
- 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 ...
- .Net core NPOI导入导出Excel
最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...
- .NET导入导出Excel
若是开发后台系统,ASP.NET MVC中总是涉及了很多导入导出Excel的问题,有的时候处理起来比较烦 如果能使用以下代码解决,就完美了 public class ReportModel { [Ex ...
随机推荐
- 模仿51cto搜索框
做这个demo遇见的问题 1==>input type=submit有默认样式 padding:1px 6px所以将他去除 2==>input submit有默认样式 去除默认边框 bor ...
- shell 之while两种写法
1.while[] #!/bin/dash min= max= while [ $min -le $max ] do echo $min min=`` done 2. while(()) #!/bin ...
- luoguP1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)
题意 注:默认\(n\leqslant m\). 所求即为:\(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}lcm(i,j)\) 因为\(i*j=\gcd(i, ...
- goto命令
GOTO会点编程的朋友就会知道这是跳转的意思. 在批处理中允许以“:XXX”来构建一个标号,然后用GOTO XXX跳转到标号:XXX处,然后执行标号后的命令. 例: }=={} goto noparm ...
- 【oracle】ORA-12638 : 身份证明检索失败
sqlnet.ora 1.删了 2.#注释了 背后缘由:待写
- 单交换机VLAN划分(基于Cisco模拟器)
实验目的: (1)掌握交换机配置的几种模式及基本配置命令. (2)掌握VLAN的原理及基于交换机端口的VLAN划分方法. 实验设备: 交换机一台,主机四台,直通线四根 实验步骤: 1.给交换机划分VL ...
- python的可变类型和不可变类型
Python有六种数据类型:数字类型.字符串类型.列表类型.元组类型.字典类型和集合类型 其中不可变类型包括三种:数字类型.字符串类型和元组类型 剩余三种为可变类型:列表类型.字典类型和集合类型 可变 ...
- 记一次linux下安装redis, 设置redis服务, 及添加环境变量
一. redis的安装 cd /opt # ...
- alarm()函数的使用总结
alarm()函数说明 1.引用头文件:#include <unistd.h>; 2.函数标准式:unsigned int alarm(unsigned int seconds); 3.功 ...
- CF1175E Minimal Segment Cover
题目链接 题意 给出n条线段.m次询问,每次询问给出一个区间\([l,r]\)问最少需要多少条线段才能覆盖区间\([l,r]\). 所有坐标\(\le 5\times 10^5\).\(n,m\le ...