Asp .Net Core Excel导入和导出
ASP .Net Core使用EPPlus实现Api导入导出,这里使用是EPPlus 4.5.2.1版本,.Net Core 2.2。在linux上运行的时候需要安装libgdiplus 。
下面我们看下如何实现导出导入的功能。
新建项目ASP.NET Core Web Api 、添加Test类
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
导出Excel文件
新建控制器ExecelController
using System; using System.Collections.Generic; using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OfficeOpenXml; namespace WebApplication5.Controllers
{
[ApiController]
public class ExecelController : ControllerBase
{ [Route("api/Execel/TOExecel")]
public IActionResult TOExecel()
{
var list = new List<Test>(); list.Add(new Test()
{
Id = ,
Name = "Test",
Age = , }); byte[] fileContents;
using (ExcelPackage package = new ExcelPackage())
{ ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(".Net Core 导出"); worksheet.Cells[, ].Value = "序号";
worksheet.Cells[, ].Value = "Id";
worksheet.Cells[, ].Value = "名称";
worksheet.Cells[, ].Value = "年龄"; int i = ; foreach (var item in list)
{
worksheet.Cells["A" + i].Value = i - ;
worksheet.Cells["B" + i].Value = item.Id;
worksheet.Cells["C" + i].Value = item.Name;
worksheet.Cells["D" + i].Value = item.Age;
i = i + ;
} fileContents = package.GetAsByteArray();
if (fileContents == null || fileContents.Length == )
{
return NotFound();
}
}
return File(fileContents, "application/ms-excel", $"{Guid.NewGuid().ToString()}.xlsx");
}
}
}
导入Excel文件
[Route("api/Execel/Import")]
public async Task<IActionResult> Import(IFormFile excelFile)
{ var msg = "";
if (excelFile == null || excelFile.Length <= )
{
msg = "请选择导入文件!";
return Ok(msg);
} if (!Path.GetExtension(excelFile.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase))
{
msg = "请选择导入文件为.xlsx的后缀名!";
return Ok(msg);
} try
{
using (var stream = new MemoryStream())
{
await excelFile.CopyToAsync(stream); using (var package = new ExcelPackage(stream))
{ StringBuilder sb = new StringBuilder();
ExcelWorksheet worksheet = package.Workbook.Worksheets[];
int rowCount = worksheet.Dimension.Rows;
int ColCount = worksheet.Dimension.Columns;
bool bHeaderRow = true; for (int row = ; row <= rowCount; row++)
{
Test model = new Test();
for (int col = ; col <= ColCount; col++)
{
if (bHeaderRow)
{
switch (col)
{
case :
model.Id = int.Parse(worksheet.Cells[row, col].Value.ToString());
break;
case :
model.Name = worksheet.Cells[row, col].Value.ToString();
break;
case :
model.Age = int.Parse(worksheet.Cells[row, col].Value.ToString());
break;
}
} else
{
switch (col)
{
case :
model.Id = int.Parse(worksheet.Cells[row, col].Value.ToString());
break;
case :
model.Name = worksheet.Cells[row, col].Value.ToString();
break; case :
model.Age = int.Parse(worksheet.Cells[row, col].Value.ToString());
break;
}
}
} //插入model即可
}
}
}
msg = "导入成功!";
return Ok(msg);
} catch (Exception ex)
{
msg = ex.Message;
return Ok(msg);
}
}
按照格式导入即可完成导入功能。
这里导出是通过流的方式进行导出的,一般来说也可以先把Excel保存到服务器,然后直接通过Url访问服务器的文件的地址就可以实现在线下载。通过流导出的话就不需要去访问服务器文件了,访问接口查询数据就直接导出了。
在导入的时候目前测试仅仅支持.xlsx格式的,.xls格式的Excel在基于流创建ExcelPackage类的新实例的时候会报为空的错误。var package = new ExcelPackage(stream)还有待修改。
欢迎大家扫描下方二维码,和我一起学习更多的知识
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ... 本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ... 本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ... JXLS (Excel导入.导出工具使用) 1:简介: jxls是一个简单的.轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局.java中成熟的excel导出工具有p ... 系列目录 昨天文章太过仓促没有补充导出的示例源码,在者当时弄到到很晚没时间做出导出功能,对阅读理解造成影响,现补充一份示例源码,顺便补充导出的功能说明,望理解 示例代码下载 https://yun ... 本文示例代码下载: 链接:http://pan.baidu.com/s/1jHBdgCA 密码:hzh7 ps:Vs数据库脚本在解压目录下,修改web.config数据库链接,示例代码包含:导入,导出 ... 前言 我们在日常开发中对Excel的操作可能会比较频繁,好多功能都会涉及到Excel的操作.在.Net Core中大家可能使用Npoi比较多,这款软件功能也十分强大,而且接近原始编程.但是直接使用Np ... 前言 之前说了导入和导出,也提供了自定义的表模的导入,可见LinqToExcel可以做的事情不仅仅如此 这次我们来演示比较复杂的导出Excel,导出复杂的Excel与导入复杂的Excel原理基本是一样 ... 1.Excel数据导入到数据库中: //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,sheetname为表示那个Excel表: p ... 在JavaScript中能够自动转换变量的数据类型,这种转换是一种隐性行为.在自动转换数据类型时,JavaScript一般遵循:如果某个类型的值被用于需要其它类型的值的环境中,JavaScript就自 ... Node.js is a JavaScript runtime built on Chrome's V8 Node.js uses an event-driven,non-blocking I/O ... 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简单的正则表达式,例如 ... 摘录 python核心编程s GUI(Graphical User Interface)图形用户界面. Tcl.Tk和Tkinter Tkinter是python的默认GUI库.它基于Tk工具包,该工 ... 原文链接:wiki语法大全 编辑一个维客页面十分容易.只要点击页面上方的“编辑本页”或右侧的[编辑]链接即可修改该页,或点击“讨论本页”然后再点击“编辑页面”来讨论该页面.点击后您就会看到一个包含那 ... 11. 基于定时器的动画 基于定时器的动画 我可以指导你,但是你必须按照我说的做. -- 骇客帝国 在第10章“缓冲”中,我们研究了CAMediaTimingFunction,它是一个通过控制动画缓冲 ... /** *textarea 字数限制 *obj textarea * maxlength 限制的最大字数 */ function textarealength(obj,maxlength){ var ... 简介 Bash所支持的算术运算和C语言是一样的,这里指的是操作符(operator)以及它们的优先级(precedence).结合性(associativity)和值,详见Shell Arithmet ... 1 配置crontab计划任务时,记录的格式是什么? 分钟 小时 日期 月份 星期 可执行语句 2 配置crontab计划任务实例. 以root用户身份添加计划任务,每天早上7:30启动sshd服务, ...Asp .Net Core Excel导入和导出的更多相关文章
随机推荐