npoi导出文件不保存在服务器,NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头...

///

///EXCEL帮助类

泛型类

泛型类集合

public class ExcelHelp where TCollection : List{static ExcelHelp instance = new ExcelHelp();//获取httpResponse对象原位置,放在这里不知道会报错:服务器无法在发送 HTTP 标头之后追加标头可能是这里拿到的httpResponse对象不是最新请求的对象导致的,将其放到方法内部即可HttpResponse baseResponse = HttpContext.Current.Response;

将数据导出EXCEL

键值对集合(键:列名,值:每列数据集合)

void ExportExcelData(Dictionary>columnNameAndShowNameDic)

{

IWorkbook workbook= newHSSFWorkbook();

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[]].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();

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值