NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头
发布时间:2020-12-16 08:55:51 所属栏目:asp.Net 来源:网络整理
导读:虽然发表了2篇关于NPOI导出EXCEL的文章,但是最近再次使用的时候,把以前的代码粘贴过来,居然报了一个错误: “ 服务器无法在发送 HTTP 标头之后追加标头” 后来也查询了很多其他同学的文章,都没有成功,可能问题不太一样吧,我的问题出在:获取httpRespon
虽然发表了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> { static ExcelHelp<T,TCollection> instance = new ExcelHelp<T,TCollection>(); //获取httpResponse对象原位置,放在这里不知道会报错:服务器无法在发送 HTTP 标头之后追加标头 可能是这里拿到的httpResponse对象不是最新请求的对象导致的,将其放到方法内部即可 HttpResponse baseResponse = HttpContext.Current.Response; <summary> 将数据导出EXCEL </summary> <param name="columnNameAndShowNameDic">键值对集合(键:列名,值:每列数据集合)</param> 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(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[]].Count; int i = ) { int j = 0; j < raws; j++) { if (i == ) { row1 = worksheet.CreateRow(j + 1); } 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 = ; baseResponse.ContentEncoding = System.Text.Encoding.UTF8; baseResponse.ContentType = application/vnd.ms-excel; 设置导出文件名 baseResponse.AppendHeader(content-disposition",attachment;filename=zhilian.xls); MemoryStream ms = MemoryStream(); workbook.Write(ms); byte[] buffer = ms.ToArray(); baseResponse.AddHeader(Content-Length,buffer.Length.ToString()); baseResponse.BinaryWrite(buffer); baseResponse.Flush(); baseResponse.End(); } } ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Kendoui MVC EditorTemplateName在PopUp编辑
- asp.net jquery无刷新分页插件(jquery.pagination.js)
- 使用.NET Class作为SSRS RDLC的数据源
- asp.net – IIS 7.5无法打开处理程序映射?
- .net – <%#%>和<%=%>有什么区别?
- asp.net-mvc – Asp.Net MVC如何记录所有被调用的动作
- ASP.NET:这个HttpModule有什么作用? System.ServiceModel
- asp.net-mvc – 如何成功配置Common.Logging?
- asp.net-mvc – 如何从模型中为ASP.NET MVC DropDownList设
- .Net Core 3.0后台使用httpclient请求网络网页和图片_使用C
推荐文章
站长推荐
- asp.net – 如何在IIS7中为HttpHandler注册多个路
- ASP.Net 3.5 / 4.0 CodeBehind还是CodeFile?
- asp.net – 在try / catch块中包装Web服务
- asp.net-mvc – 如何提交本地jqgrid数据和表单输
- asp.net – 具有FormsAuthentication的跨域Cooki
- 开源工具软件XMusicDownloader——音乐下载神器
- .net – 解密字符串时偶尔出现错误数据错误:Sys
- asp.net – 如何在经典的asp中使用.net共享会话?
- asp.net-mvc – ASP.NET MVC绑定模型中的数组
- asp.net – 在GridViewTemplate字段TextBox中对齐
热点阅读