开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.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的更多相关文章

  1. asp.net core web的导入导出excel功能

    这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...

  2. .NET CORE webapi epplus 导入导出 (实习第一个月的笔记)

    最近有个需求就是网页表格里面的数据导出到excel  于是从各位前辈的博客园搜了搜demo  大部分非为两类 都是用的插件NPOI和Eppluse ,因此在这里就介绍Eppluse 用法,还有就是在博 ...

  3. ASP.Net MVC利用NPOI导入导出Excel

    因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...

  4. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  5. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  6. ASP.NET Core使用EPPlus操作Excel

    1.前言 本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用 2.使用 新建一个AS ...

  7. 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 ...

  8. .Net core NPOI导入导出Excel

    最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...

  9. .NET导入导出Excel

    若是开发后台系统,ASP.NET MVC中总是涉及了很多导入导出Excel的问题,有的时候处理起来比较烦 如果能使用以下代码解决,就完美了 public class ReportModel { [Ex ...

随机推荐

  1. JS中key-value存取

    获取Key 在代码中,遇到需要单独提取对象的key值时可使用 Object.keys(object) object是你需要操作的对象Object.keys()会返回一个存储对象中所有key值的数组获取 ...

  2. 201871010106-丁宣元 《面向对象程序设计(java)》第十一周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...

  3. DRL强化学习:

    IT博客网 热点推荐 推荐博客 编程语言 数据库 前端 IT博客网 > 域名隐私保护 免费 DRL前沿之:Hierarchical Deep Reinforcement Learning 来源: ...

  4. zz深度学习论文合集大全

        Pull requestsIssues Marketplace Explore             Learn Git and GitHub without any code! Using ...

  5. [PHP] 关闭nginx访问favico.ico功能

    关闭nginx访问favico.ico功能 nginx日志最近发生大量访问favicon.ico无法找到的错误日志,很影响服务器性能,对于一个高并发的服务器每一个错误都会影响性能 关闭访问favico ...

  6. Educational Codeforces Round 61 (Rated for Div. 2) E 多重背包优化

    https://codeforces.com/contest/1132/problem/E 题意 有8种物品,重量是1~8,每种数量是\(cnt[i]\)(1e16),问容量为W(1e18)的背包最多 ...

  7. 8.19 NOIP模拟测试26(B) 嚎叫响彻在贪婪的厂房+主仆见证了 Hobo 的离别+征途堆积出友情的永恒

    T1 嚎叫响彻在贪婪的厂房 以前做过一个等比数列的题「序列」,这个类似 是等差数列且公差不为1的条件就是各项差的绝对值的$gcd!=1$,每次拿出序列前两个数,求出差值,插入到set里,每次向后扩展, ...

  8. shell之startup

    #!/bin/sh # # # # PROJECT=$ APPWORK_DIR=~/apps/$PROJECT LOGPATH=~/logs/$ LOGFILE=~/logs/$PROJECT/${P ...

  9. [原创]A/B测试系统调研思维导图

    [原创]A/B测试系统调研思维导图

  10. .NET Core创建Worker Services

    .NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序.如果安装的vs2019是中文版本,W ...