博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头
阅读量:5329 次
发布时间:2019-06-14

本文共 2557 字,大约阅读时间需要 8 分钟。

虽然发表了2篇关于NPOI导出EXCEL的文章,但是最近再次使用的时候,把以前的代码粘贴过来,居然报了一个错误:

服务器无法在发送 HTTP 标头之后追加标头”

后来也查询了很多其他同学的文章,都没有成功,可能问题不太一样吧,我的问题出在:获取httpResponse对象没有写在方法内部,是用的一个属性接受的,在方法调用导致的。

下面粘上完整代码,错误代码已注释,供其他同学参考:

///     /// EXCEL帮助类    ///     /// 
泛型类
///
泛型类集合
public class ExcelHelp
where TCollection : List
{ public static ExcelHelp
instance = new ExcelHelp
(); //获取httpResponse对象原位置,放在这里不知道会报错:服务器无法在发送 HTTP 标头之后追加标头 //可能是这里拿到的httpResponse对象不是最新请求的对象导致的,将其放到方法内部即可 //HttpResponse baseResponse = HttpContext.Current.Response; ///
/// 将数据导出EXCEL /// ///
键值对集合(键:列名,值:每列数据集合) public void ExportExcelData(Dictionary
> columnNameAndShowNameDic) { IWorkbook workbook = new HSSFWorkbook(); ISheet worksheet = workbook.CreateSheet("sheet1"); List
columnNameList = columnNameAndShowNameDic.Keys.ToList(); //设置首列显示 IRow row1 = worksheet.CreateRow(0); ICell cell = null; ICellStyle cellHeadStyle = workbook.CreateCellStyle(); //设置首行字体加粗 IFont font = workbook.CreateFont(); font.Boldweight = short.MaxValue; cellHeadStyle.SetFont(font); for (var i = 0; i < columnNameList.Count; i++) { cell = row1.CreateCell(i); cell.SetCellValue(columnNameList[i]); cell.CellStyle = cellHeadStyle; } var raws = columnNameAndShowNameDic[columnNameList[0]].Count; for (int i = 0; i < columnNameList.Count; i++) { for (int j = 0; j < raws; j++) { if (i == 0) { row1 = worksheet.CreateRow(j + 1); } else { row1 = worksheet.GetRow(j + 1); } 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(); } }

 

转载于:https://www.cnblogs.com/lxhbky/p/8372418.html

你可能感兴趣的文章
自定义类加载器深入详解
查看>>
为什么有时候修改了css文件,页面的样式却没有改变?
查看>>
QuantLib 金融计算——数学工具之优化器
查看>>
Mysql基础知识--触发器
查看>>
ORM篇——有关NHibernate查询封装
查看>>
微信sdk分享功能详解
查看>>
linux 硬盘信息查看
查看>>
获取公网IP地址
查看>>
使用JQuery实现手风琴布局
查看>>
数据结构-自平衡二叉查找树(AVL)详解
查看>>
web开发http模拟提交插件HttpRequester(火狐)Postman(Chromer)
查看>>
Java 多线程(一) 基础知识与概念
查看>>
BZOJ 1009 【HNOI2008】 GT考试
查看>>
Ubuntu 修改环境变量
查看>>
JTA Entity JPA 事务(Transaction) 会话(Conversation)
查看>>
自定义之一个图片根据另一个图片形状进行裁剪
查看>>
Intellij idea 导入 jdbc
查看>>
网络通讯
查看>>
MYSQL trigger 个人记录
查看>>
UEFI +、GPT 、BIOS 、 MBR的关系
查看>>