///
///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();
}
}