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. 将SD系统启动卡恢复成普通卡

    1.卸载SD卡分区 在使用fdisk命令前,请使用如下命令卸载boot分区和rootfs分区: umount /media/boot umount /media/rootfs 2.在插入SD卡前后分别 ...

  2. 【每天一题】LeetCode 0067. 二进制求和

    开源地址:https://github.com/jiauzhang/algorithms 题目描述 * https://leetcode-cn.com/problems/add-binary * 给定 ...

  3. NPOI 工作簿一般设置

    HSSFWorkbook workbook = new HSSFWorkbook(); //声明一个空白的工作簿,也可以将已有文件转化为文件流作为参数声明一个工作簿,这样这个工作簿里就会有已有文件中的 ...

  4. 关于MySQL注入漏洞到获取webshell

    关于PHP网站报错性注入拿shell的方法,定位到报错在某个字段上的利用方式: 条件1: 爆出了网站的物理路径 条件2:MySQL具有into outfile权限 SQL语句为: 假如字段为2: un ...

  5. Dynamics 365 Portal 修改注册页面及Profile页面

    一,Profile页面 客户要求在Portal Profile页面上添加性别字段,通过查看源代码发现,中间的联系人信息部分是引用的CRM中Contact实体的Portal Web Form表单,直接把 ...

  6. Android DSelectorBryant 单选滚动选择器

    单选滚动选择器.diy丰富.有阻尼效果.简单美观.触摸or点击模式 (Rolling Selector, Diy Rich, Damping Effect, Simple and Beautiful, ...

  7. Android 布局阴影实现

    最近项目要求,ui有很多有关于阴影的设计要求,网上找了些实现方式,但都不是很理想.现在闲下来了,就寻思着自己写个阴影布局耍耍,以备后用.先说道说道我找到的几种阴影实现方式: 系统阴影 Andorid ...

  8. 精通awk系列(16):gawk支持的正则表达式

    回到: Linux系列文章 Shell系列文章 Awk系列文章 gawk支持的正则 . # 匹配任意字符,包括换行符 ^ $ [...] [^...] | + * ? () {m} {m,} {m,n ...

  9. Appium(九):Appium API(三) 滑动和拖拽、高级手势、手机操作

    1. 滑动和拖拽 我们在做自动化测试的时候,有些按钮是需要滑动几次屏幕后才会出现,此时,我们需要使用代码来模拟手指的滑动,也就是接下来要学的滑动和拖拽了. 1.1 swipe滑动事件 从一个坐标位置滑 ...

  10. RBAC-权限管理设计

    1.RBAC(Role-Based Access Control)——基于角色的访问控制.简单来说每个角色有不同的权限,通过对用户赋予不同角色来赋予其对应权限. 2.RBAC0:最基本的用户角色多对多 ...