1.安装nuget包

2.封装方法

     public byte[] ExportToByteArray(IEnumerable<string> headerText,
IEnumerable<string[]> dataList,
string extraMessage = null)
{
IWorkbook workbook = Write(headerText, dataList, extraMessage);
var memoryStream = new MemoryStream();
workbook.Write(memoryStream); return memoryStream.ToArray();
} private static IWorkbook Write(IEnumerable<string> headerText,
IEnumerable<string[]> dataList,
string extraMessage = null)
{
IWorkbook wb = new XSSFWorkbook();
ISheet sheet = wb.CreateSheet("Sheet1");
var rowIndex = ; if (!string.IsNullOrEmpty(extraMessage))
{
SetExcelRowForExtraMessage(sheet, extraMessage);
rowIndex += ;
} SetExcelHeaderRow(sheet, rowIndex, headerText.ToList());
rowIndex += ; if (!dataList.Any())
{
return wb;
} for (var i = ; i < dataList.Count(); i++)
{
SetExcelBodyRow(sheet, rowIndex + i, dataList.ElementAt(i));
} //优化表格的列宽
int maxColumnIndex = dataList.Max(row => row.Count());
for (var i = ; i < maxColumnIndex; i++)
{
sheet.AutoSizeColumn(i);
} return wb;
}

3.Controller调用方法

      /// <summary>
/// 基金净值下载
/// </summary>
[HttpGet]
public HttpResponseMessage DownloadExecl()
{
try
{
//获取数据 var productList = _productService.GetProductList(); var exportData = ProductList.Select(t => new {
t.Date,
t.Name
}).ToList();
//下载文件
var fileName = $"{DateTime.Today:yyyyMMdd}.xlsx";
var bytes = _exportor.ExportToByteArray(HeaderText, exportData, "");
var response = GetFileResponse(fileName, bytes); return response;
}
catch (Exception)
{
return new HttpResponseMessage(System.Net.HttpStatusCode.NoContent);
}
} private HttpResponseMessage GetFileResponse(string fileName, byte[] bytes)
{
HttpResponseMessage response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
var mime = System.Web.MimeMapping.GetMimeMapping(fileName);
var stream = new MemoryStream(bytes);
response.Content = new StreamContent(stream);
response.Content = new StreamContent(stream);
bool isFirefox = Request.Headers.UserAgent.ToString()
.IndexOf("Firefox", StringComparison.CurrentCultureIgnoreCase) > -;
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(mime);
response.Content.Headers.ContentDisposition =
new ContentDispositionHeaderValue("attachment")
{
FileName = isFirefox ? fileName :
HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)
};
response.Content.Headers.ContentLength = stream.Length; return response;
}      /// <summary>
/// Excel列头
/// </summary>
private static readonly string[] HeaderText =
{
"时间",
"名称"
};

【NPOI】WebAPI-使用NPOI导出Excel的更多相关文章

  1. 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密

    使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...

  2. asp.net mvc4使用NPOI 数据处理之快速导出Excel文档

    一.背景 在之前做的小项目里有一需求是:要求将一活动录入的数据进行统计,并以excel表格形式导出来,并且对表格格式要求并不高. 二.问题分析 鉴于用户只要求最终将数据库中的数据导出excel,对于格 ...

  3. .NET使用NPOI组件将数据导出Excel

    .NPOI官方网站:http://npoi.codeplex.com/ 可以到此网站上去下载最新的NPOI组件版本 2.NPOI在线学习教程(中文版): http://www.cnblogs.com/ ...

  4. net npoi将List<实体>导出excel的最简单方法

    只是临时导数据用的.方便.最基本的方法, [HttpGet] [Route("ExportEnterprise")] public BaseResponse ExportEnter ...

  5. mvc4 用NPOI导出Excel

    第一次做数据导出Excel,刚看到这个的时候,首先想到的就是新建一个excel的文件,然后将它下载,后来询问别人,他们都推荐使用NPOI,发现这个很好用,就用博客记录一下 1.引用NPOI包 2.导出 ...

  6. 基于Vue + axios + WebApi + NPOI导出Excel文件

    一.前言 项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件.其业务场景,主要是列表页 ...

  7. net core WebApi——使用NPOI导入导出操作

    目录 前言 NPOI 测试 小结 @ 前言 时间过得好快,在之前升级到3.0之后,就感觉好久没再动过啥东西了,之前有问到Swagger的中文汉化,虽说我觉得这种操作的意义不是太大,也是多少鼓捣了下,其 ...

  8. NPOI导出Excel

    using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...

  9. NPOI操作EXCEL(四)——反射机制批量导出excel文件

    前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...

  10. NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters

    /******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...

随机推荐

  1. multer中间件

    1.Multer是node.js的一个中间件,用于处理multipart/form-data类型的表单数据,它主要用于上传文件.(Multer不会处理任何非multipart/form-data类型的 ...

  2. 数据库-MySQL入门

    什么是数据库? 一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合 数据库管理系统(简称DBMS):是为管理数据库而设计的电脑软件系统,一般具有存储.截取.安全保 ...

  3. MediaCodec在Android视频硬解码组件的应用

    https://yq.aliyun.com/articles/632892 云栖社区> 博客列表> 正文 MediaCodec在Android视频硬解码组件的应用   cheenc 201 ...

  4. python的反射函数(hasattr()、getattr()、setattr()与delattr())和类的内置属性attr(__getattr()__、__setattr()__与__delattr()__)

    主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省),有四个可以实现自省函数. hasattr(object,name) 判断object中是否有name字符串对应的属性或方法,返回Tr ...

  5. Linux进程内存分析pmap命令

    转自: http://blog.csdn.net/u013982161/article/details/52654256 名称: pmap - report memory map of a proce ...

  6. 02: flask 使用举例

    1.1 项目说明   https://github.com/rickyyangrui/Flask_web_demo1 1.项目文件结构 2.项目主文件 cssmin==0.2.0 Flask==0.1 ...

  7. k8s debug

    https://feisky.gitbooks.io/kubernetes/components/api-aggregation.html API convention Kubernetes deep ...

  8. stm32最简单的实现BootLoader

    BootLoader大家应该都知道是干什么的,简单的来说就是程序开始运行前的一段程序. 在成熟的产品中,通常都是采用BootLoader方式来升级产品的程序.也就是IAP升级.在了解完基本的实现原理后 ...

  9. NOIP模拟题 2017.11.6

    题目大意 给定一个大小为n的数组,从中选出一个子集使得这个子集中的数的和能被n整除. 假设开始我没有做出来,那么我就random_shuffle一下,然后计算前缀和,有一个能被n整除,就输出答案.于是 ...

  10. 【python004-分支循环】

    一.条件分支 1.第一个改进要求:游戏猜错的时候程序提示用户当前的输入比答案大了还是小了 python的比较操作符: >         左边大于右边 >=       左边大于等于右边 ...