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. Python进阶【第三篇】Python中的基本数据类型

    一.运算符 1.算术运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 二.基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1 ...

  2. pat 团体赛练习题集 L2-007. 家庭房产

    给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式给出一个人的房产: ...

  3. Source Insight 如何将script等文件加入

    点击菜单栏Options -> Document Options , 然后再弹出的对话框中找到File filter,文件过滤的设置,里面肯能有*.c;*.h 你在后面添加Makefile,注意 ...

  4. ES6知识整理(2)--变量的解构赋值

    最近准备在业余空闲时间里一边学习ES6,一边整理相关知识.只有整理过的学习才是有效的学习.也就是学习之后要使用和整理成文,才是真正的学到了... 上一篇是一个试水,现在接上. 变量提升 看了下朋友回复 ...

  5. Java基础再复习(继承、多态、方法内部类**、HashMap用法**、参数传递**)

    ###继承: package com.shiyan; public class Animal { public int legNum; //动物四肢的数量 //类方法 public void bark ...

  6. 使用dockerfile构建自己的镜像

    CentOS Linux release 7.2.1511 Docker version 17.03.1-ce 首先应该了解docker镜像的分层机制,这个网上文章很多,简单说就是对镜像的每次修改都是 ...

  7. docker 初步使用

    CentOS Linux release 7.2.1511 Docker version 17.03.1-ce 安装与启动 yum直接安装的docker版本较低,推荐这样安装: # 官方,可能网络连不 ...

  8. jQuery知识总结(转)

    原文:http://fwhyy.com/2013/04/jquery-knowledge-summary/ 这篇文章在于筛选器的简单例子,让人一看就懂代码的作用 20170223 前言 jQuery一 ...

  9. Codeforces 866C Gotta Go Fast - 动态规划 - 概率与期望 - 二分答案

    You're trying to set the record on your favorite video game. The game consists of N levels, which mu ...

  10. Python3基础 list count 查询指定元素在列表中出现了多少次

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...