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)还有待修改。


  欢迎大家扫描下方二维码,和我一起学习更多的知识

Asp .Net Core Excel导入和导出的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

    系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...

  2. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  3. C# Excel导入、导出

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  4. JXLS (Excel导入、导出工具使用)

    JXLS (Excel导入.导出工具使用) 1:简介: jxls是一个简单的.轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局.java中成熟的excel导出工具有p ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出

    系列目录 昨天文章太过仓促没有补充导出的示例源码,在者当时弄到到很晚没时间做出导出功能,对阅读理解造成影响,现补充一份示例源码,顺便补充导出的功能说明,望理解 示例代码下载   https://yun ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出

    本文示例代码下载: 链接:http://pan.baidu.com/s/1jHBdgCA 密码:hzh7 ps:Vs数据库脚本在解压目录下,修改web.config数据库链接,示例代码包含:导入,导出 ...

  7. .Net Core Excel导入导出神器Npoi.Mapper

    前言 我们在日常开发中对Excel的操作可能会比较频繁,好多功能都会涉及到Excel的操作.在.Net Core中大家可能使用Npoi比较多,这款软件功能也十分强大,而且接近原始编程.但是直接使用Np ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(88)-Excel导入和导出-自定义表模导出

    前言 之前说了导入和导出,也提供了自定义的表模的导入,可见LinqToExcel可以做的事情不仅仅如此 这次我们来演示比较复杂的导出Excel,导出复杂的Excel与导入复杂的Excel原理基本是一样 ...

  9. asp.net Excel导入和导出

    1.Excel数据导入到数据库中: //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,sheetname为表示那个Excel表:        p ...

随机推荐

  1. 骚年,如果你还不懂一些java常识?中了奖也无法兑换

    今天下午约着几个朋友一起去看叶问4,结果碰到了一个有趣的事情,正好和java有关所以写一篇文章来记录一下. 事件:我和朋友小李.小王一起去看电影 时间:2019/12/21 地点:H市某家电影院 起因 ...

  2. Docker 以及 docker-compose 的部署

    Docker部署 方式一 #下载软件源 wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/li ...

  3. LeetCode 11月第2周题目汇总

    开源地址:点击该链接 前言 最近比较忙,这周几乎没有刷题,只刷了6道题~ 题目汇总 0387_first_unique_character_in_a_string类似的题目比较多了,字符串中找出特别的 ...

  4. JS---part5 课程介绍 & part4 复习

    part5 课程介绍 另一个定时器 第一个定时器的小案例----练习 封装动画函数----------匀速的动画函数,过渡到=======>缓动的动画函数 简单的轮播图 左右焦点的轮播图 无缝连 ...

  5. PWM是如何调节直流电机转速的?电机正反转的原理又是怎样的?

    电机是重要的执行机构,可以将电转转化为机械能,从而驱动北控设备的转动或者移动,在我们的生活中应用非常广泛.例如,应用在电动工具.电动平衡车.电动园林工具.儿童玩具中.直流电机的实物图如下图所示. 1- ...

  6. Azure 上通过Automation 实现定时开关虚拟机

    更多内容,请关注公众号: Azure Automation 可以提供一些自动化的功能,比如我们可以指定在每天早上6点开启虚拟机,每天晚上8点关闭虚拟机.同时还提供一些基于监控参数的自动化配置.今天的主 ...

  7. WPF 3D球及进阶玩法

    在WPF中3D球的构建算法请参考: https://www.cnblogs.com/lonelyxmas/p/9844951.html 好玩以及值得借鉴的Demo:   (CSDN下载需要积分,避免你 ...

  8. How to: Map a Persistent Class to a Database View Which Has No Key Field如何:映射持久化类到无主键数据库视图

    With XAF, you can build new applications from scratch or maintain existing databases. The How to: Ge ...

  9. Audit Object Changes 审核对象更改

    Important 重要 The Audit Trail module is not supported by the Entity Framework ORM in the current vers ...

  10. 2019年创意可爱卡通小清新教育课件培训PPT模板

    模版来源:http://ppt.dede58.com/jiaoxuekejian/26791.html