NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头
虽然发表了2篇关于NPOI导出EXCEL的文章,但是最近再次使用的时候,把以前的代码粘贴过来,居然报了一个错误:
“服务器无法在发送 HTTP 标头之后追加标头”
后来也查询了很多其他同学的文章,都没有成功,可能问题不太一样吧,我的问题出在:获取httpResponse对象没有写在方法内部,是用的一个属性接受的,在方法调用导致的。
下面粘上完整代码,错误代码已注释,供其他同学参考:
/// <summary>
/// EXCEL帮助类
/// </summary>
/// <typeparam name="T">泛型类</typeparam>
/// <typeparam name="TCollection">泛型类集合</typeparam>
public class ExcelHelp<T, TCollection> where TCollection : List<T>
{
public static ExcelHelp<T, TCollection> instance = new ExcelHelp<T, TCollection>();
//获取httpResponse对象原位置,放在这里不知道会报错:服务器无法在发送 HTTP 标头之后追加标头
//可能是这里拿到的httpResponse对象不是最新请求的对象导致的,将其放到方法内部即可
//HttpResponse baseResponse = HttpContext.Current.Response; /// <summary>
/// 将数据导出EXCEL
/// </summary>
/// <param name="columnNameAndShowNameDic">键值对集合(键:列名,值:每列数据集合)</param>
public void ExportExcelData(Dictionary<string, List<string>> columnNameAndShowNameDic)
{
IWorkbook workbook = new HSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("sheet1"); List<string> columnNameList = columnNameAndShowNameDic.Keys.ToList();
//设置首列显示
IRow row1 = worksheet.CreateRow();
ICell cell = null;
ICellStyle cellHeadStyle = workbook.CreateCellStyle();
//设置首行字体加粗
IFont font = workbook.CreateFont();
font.Boldweight = short.MaxValue;
cellHeadStyle.SetFont(font);
for (var i = ; i < columnNameList.Count; i++)
{
cell = row1.CreateCell(i);
cell.SetCellValue(columnNameList[i]);
cell.CellStyle = cellHeadStyle;
}
var raws = columnNameAndShowNameDic[columnNameList[]].Count;
for (int i = ; i < columnNameList.Count; i++)
{
for (int j = ; j < raws; j++)
{
if (i == )
{
row1 = worksheet.CreateRow(j + );
}
else
{
row1 = worksheet.GetRow(j + );
}
cell = row1.CreateCell(i);
cell.SetCellValue(columnNameAndShowNameDic[columnNameList[i]][j]);
}
//设置行宽度自适应
worksheet.AutoSizeColumn(i, true);
//worksheet.SetColumnWidth(i, columnWidth * 200);
}
//http请求Response对象-这里httpResponse对象要在方法内获取,否则可能会出现:无法再response发送表头后添加header的问题
HttpResponse baseResponse = HttpContext.Current.Response;
baseResponse.Clear();
baseResponse.Buffer = true;
baseResponse.ContentEncoding = System.Text.Encoding.UTF8;
baseResponse.ContentType = "application/vnd.ms-excel";
//设置导出文件名
baseResponse.AppendHeader("content-disposition", "attachment;filename=zhilian.xls");
MemoryStream ms = new MemoryStream();
workbook.Write(ms);
byte[] buffer = ms.ToArray();
baseResponse.AddHeader("Content-Length", buffer.Length.ToString());
baseResponse.BinaryWrite(buffer);
baseResponse.Flush();
baseResponse.End();
}
}
NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头的更多相关文章
- Asp.Net 使用Npoi导出Excel
引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- .NET NPOI导出Excel详解
NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, ...
- NPOI导出excel(带图片)
近期项目中用到Excel导出功能,之前都是用普通的office组件导出的方法,今天尝试用下NPOI,故作此文以备日后查阅. 1.NPOI官网http://npoi.codeplex.com/,下载最新 ...
- NPOI导出Excel及使用问题
NPOI导出Excel及使用问题 因为最近公司质管部门提出了一个统计报表的需求:要求导出一个2016及2017年度深圳区域的所有供应商的费用成本计算--一个22列的Excel表,其中还包括多列的合并单 ...
- NPOI导出EXCEL 打印设置分页及打印标题
在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置 sheet1.FitToPage = false; 而 ...
- NPOI导出Excel(含有超过65335的处理情况)
NPOI导出Excel的网上有很多,正好自己遇到就学习并总结了一下: 首先说明几点: 1.Excel2003及一下:后缀xls,单个sheet最大行数为65335 Excel2007 单个sheet ...
- [转]NPOI导出EXCEL 打印设置分页及打印标题
本文转自:http://www.cnblogs.com/Gyoung/p/4483475.html 在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方 ...
- java导出excel报错:getOutputStream() has already been called for this response
对于java导出excel报错的问题,查了很多都说是在使用完输出流以后调用以下两行代码即可 out.clear(); out = pageContext.pushBody(); 但这也许是页面上输出时 ...
随机推荐
- 团队-Forward团队-团队一阶段互评
团队名称:Forward团队 学号:2015035107105 得分:7 原因:知识欠缺,能够一边学一边做 学号:2015035107109 得分:6 原因:对我有很多帮助 学号:2015035107 ...
- shell脚本颜色输出(实例未编辑)
颜色输出通过echo 输出,需要加-e echo -e "\033[背景颜色;字体颜色\033[0m" 背景颜色 40 设置黑色背景 41 设置红色背景 42 设置绿色背景 43 ...
- 记录一下msf的学习使用
刚刚用Metasploit Pro scan了一下云端服务器.RHOST直接输IP就好. 得到反馈如下: [*] [2019.04.04-14:27:35] Scan initiated: Speed ...
- Django搭建博客记(一)
这里记录一些 Django 搭建博客遇到的一些问题 参考书籍为 Django by Example, 这里记录与书籍内容不包含的内容. 搭建环境: 阿里云 ECS + CentOS7 一开始搭建的时候 ...
- JVM之垃圾收集器与内存分配回收策略(二)
上一篇JVM垃圾收集器与内存分配策略(一),下面是jdk1.7版本的垃圾收集器之间的关系,其中连线两端的两种垃圾收集器可以进行搭配使用,下面来总结一下这些收集器的一些特点以及关系. 一.Serial收 ...
- 【SP26073】DIVCNT1 - Counting Divisors 题解
题目描述 定义 \(d(n)\) 为 \(n\) 的正因数的个数,比如 \(d(2) = 2, d(6) = 4\). 令 $ S_1(n) = \sum_{i=1}^n d(i) $ 给定 \(n\ ...
- Java开发面试题,3年工作经验的Java程序员面试经
一.Java基础部分 1.使用length属性获取数组长度,public.private.protected.friendly区别 2.Collection和Collections区别 3.Strin ...
- Android WebView 超大字号适配问题
目前在使用 Android WebView 展示H5页面的时候,存在当系统字号设置超大的时候,出现页面内容展示不全的问题. 此问题是因为Android WebView 默认使用系统字号进行展示. 解决 ...
- 使用Consul 实现 MagicOnion(GRpc) 服务注册和发现
1.下载打开Consul 笔者是windows下面开发的(也可以使用Docker). 官网下载windows的Consul https://www.consul.io/ 使用cmd窗口打开,输入con ...
- #Java学习之路——基础阶段(第二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...