【NPOI】WebAPI-使用NPOI导出Excel
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的更多相关文章
- 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密
使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...
- asp.net mvc4使用NPOI 数据处理之快速导出Excel文档
一.背景 在之前做的小项目里有一需求是:要求将一活动录入的数据进行统计,并以excel表格形式导出来,并且对表格格式要求并不高. 二.问题分析 鉴于用户只要求最终将数据库中的数据导出excel,对于格 ...
- .NET使用NPOI组件将数据导出Excel
.NPOI官方网站:http://npoi.codeplex.com/ 可以到此网站上去下载最新的NPOI组件版本 2.NPOI在线学习教程(中文版): http://www.cnblogs.com/ ...
- net npoi将List<实体>导出excel的最简单方法
只是临时导数据用的.方便.最基本的方法, [HttpGet] [Route("ExportEnterprise")] public BaseResponse ExportEnter ...
- mvc4 用NPOI导出Excel
第一次做数据导出Excel,刚看到这个的时候,首先想到的就是新建一个excel的文件,然后将它下载,后来询问别人,他们都推荐使用NPOI,发现这个很好用,就用博客记录一下 1.引用NPOI包 2.导出 ...
- 基于Vue + axios + WebApi + NPOI导出Excel文件
一.前言 项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件.其业务场景,主要是列表页 ...
- net core WebApi——使用NPOI导入导出操作
目录 前言 NPOI 测试 小结 @ 前言 时间过得好快,在之前升级到3.0之后,就感觉好久没再动过啥东西了,之前有问到Swagger的中文汉化,虽说我觉得这种操作的意义不是太大,也是多少鼓捣了下,其 ...
- NPOI导出Excel
using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...
- NPOI操作EXCEL(四)——反射机制批量导出excel文件
前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
随机推荐
- The Little Prince-12/14
The Little Prince-12/14 世界上有那么多的玫瑰花,但是只有你们是一直陪伴在我身边,我们相互灌溉. ————世界上有那么多的人,但是只有你们是一直陪伴在我身边,我们相互关心. “在 ...
- SpringMVC实现 MultipartFile 文件上传
1. Maven 工程引入所需要的依赖包 2. 页面需要开放多媒体标签 3. 配置文件上传试图解析器 4. 接收图片信息,通过 IO 流写入磁盘(调用解析其中的方法即可) 如下: 1.1 引入所依赖的 ...
- sql server还原注意事项
使用Sql Server 2000的数据库备份文件还原Sql Server 2000的数据库和还原Sql Server 2005的数据库区别:1.在还原至Sql 2000时是必须新建数据库并对其还原, ...
- Java开发软件安装及配置
2017-6-1 1.jdk 1.8.0_131 安装JDK 选择安装目录 安装过程中会出现两次 安装提示 . 第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的 ...
- 在配置好环境以后,启动tomcat后,出现这个异常
15-Apr-2019 16:48:13.299 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardConte ...
- PYQT5 + PYCHARM
PYQT5 C:\Users\xxx\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyqt5_tools\designer.exe ...
- ELK学习笔记之F5-HTTP-requesting-logging logstash filter
input { tcp { port => 514 type => 'f5-request' } } filter { if [type] == "f5-request" ...
- Golang利用select和普通函数分别实现斐波那契数列
//斐波那契数列 //1 1 2 3 5 8 //观察规律 //第一轮:前两个数是1,1,相加等于2 //第二轮:第二个数和第三个数是1,2,相加等于3 //第三轮:第三个数和第四个数是2,3,相加等 ...
- linux判断日志文件大小进行清理
脚本写了一个死循环,根据nohup产生的日志多大, 这里表示日志超过500M之后清理, 具体数字可自定义 睡眠数可自定义 #!/usr/bin/bash while true do s=`du -k ...
- 公网FTP(filezilla)改端口
背景:我们如果不修改ftp服务器的端口,很容易被别人测试和攻击. 配置要点:服务端端口设置.主被动设置.服务端和客户端防火墙设置 ftp服务器:filezilla ftp server 1. 监听端 ...