ASP.NET 使用一般处理程序.ashx进行 Excel下载
2015-05-12 11:44
771 查看
本人在使用一般处理程序.ashx进行Excel下载(导出)开发时,遇到的问题总结:
1、.ashx文件对Excel下载的处理,方法有两种:
①、不采用HSSFWorkbook对象进行操作(从后台查询数据,并以DataSet的形式返回)
注:在采用此方式进行导出时,需要在项目中添加引用NPOI.dll,该dll,我已在附件中给出,如有需要请下载
附件:http://down.51cto.com/data/2365671
1、.ashx文件对Excel下载的处理,方法有两种:
①、不采用HSSFWorkbook对象进行操作(从后台查询数据,并以DataSet的形式返回)
OrderManagerBl orderMgr = new OrderManagerBl(); //实例化逻辑访问层的对象 DataSet ds = orderMgr.QueryOrderInfo(queryObj); //调用获取DataSet的方法,参数是查询条件对象 //设置导出的Excel文件名,前面加年月日时分秒 string FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "订单信息.xls"; HttpResponse resp; //设置返回对象 resp = context.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); //colHeaders 是Excel表格的表头 //ls_item 是Excel表格的行 string colHeaders = "", ls_item = ""; int i = 0; //将DataSet中的值,赋值给DataTable,或者也可以从后台直接查询一个DataTable出来 DataTable dt = ds.Tables[0]; DataRow[] myRow = dt.Select(""); //取得数据表各列标题各标题之间以\t分割最后一个列标题后加回车符 for (i = 0; i < dt.Columns.Count; i++) { if (i == dt.Columns.Count - 1) { colHeaders += dt.Columns[i].Caption.ToString() + "\n"; continue; } colHeaders += dt.Columns[i].Caption.ToString() + "\t"; } //向HTTP输出流中写入取得的数据信息 resp.Write(colHeaders); //逐行处理数据 foreach (DataRow row in myRow) { //在当前行中逐列获得数据数据之间以\t分割结束时加回车符\n for (i = 0; i < dt.Columns.Count; i++) { if (i == dt.Columns.Count - 1) { ls_item += row[i].ToString() + "\n"; continue; } ls_item += row[i].ToString() + "\t"; } //当前行数据写入HTTP输出流并且置空ls_item以便下行数据 resp.Write(ls_item); ls_item = ""; } context.Response.ContentType = "application/vnd.ms-excel"; //写缓冲区中的数据到HTTP头文件中 resp.End(); context.Response.Write(context.Response.OutputStream);②、采用HSSFWorkbook对象进行导出
注:在采用此方式进行导出时,需要在项目中添加引用NPOI.dll,该dll,我已在附件中给出,如有需要请下载
context.Response.ContentType = "application/x=excel"; //设置导出的文件名字,这里我就不再使用"年月日时分秒"命名了 string filename = HttpUtility.UrlEncode("用户数据列表.xls"); context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename); //创建HSSFWorkbook工作簿对象 HSSFWorkbook workbook = new HSSFWorkbook(); //创建HSSFSheet对象 HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(); int rownum = 0; HSSFRow row = (HSSFRow)sheet.CreateRow(rownum); //取得数据表各列标题各标题之间以\t分割最后一个列标题后加回车符 for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { row.CreateCell(i, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(ds.Tables[0].Columns[i].Caption.ToString()); } rownum++; foreach (DataRow dr in ds.Tables[0].Rows) { row = (HSSFRow)sheet.CreateRow(rownum); row.CreateCell(0, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(dr["COINSIGNID"].ToString()); row.CreateCell(1, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(dr["CUST_VOUCHER_ID"].ToString()); //。。。循环进行给每行的单元格进行赋值,这里我只写了两个列进行提示 rownum++; } workbook.Write(context.Response.OutputStream);以上两种方法,是我在做Excel导出时用到的,如果大家有更好的方案,请多多提出……
附件:http://down.51cto.com/data/2365671
相关文章推荐
- asp.net- ajax简单入门使用方法,通过一般处理程序ashx进行处理
- asp.net .ashx一般处理程序中使用Session
- ASP.NET一般处理程序(.ashx.cs)中使用Session的问题
- 使用 ASP.NET 一般处理程序或 WebService 返回 JSON
- ASP.NET运行机制之一般处理程序(ashx)
- 使用 ASP.NET 一般处理程序或 WebService 返回 JSON
- asp.net中使用一般处理程序生成验证码
- asp.net 中一般应用处理程序使用session
- ASP.NET一般处理程序新建一个方法里使用context.Response.Write的解决方法
- ASP.NET ASHX 一般处理程序教程
- asp.net中在一般处理程序中使用session
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- 黑马程序员之asp.net学习笔记:一般处理程序(*.ashx)小结
- ASP.Net原理篇 之 一般处理程序(ashx)
- .NET中一般处理程序(ashx)在Ajax中的使用--下拉列表的动态级连
- 使用HTML页面和一般处理程序模拟ASP.NET WebForms中的事件
- Asp.net jQuery与ashx 安全性问题 (一般处理程序的安全问题) ashx 安全
- 使用 ASP.NET 一般处理程序或 WebService 返回 JSON
- 使用ASP.NET一般处理程序或WebService返回JSON的实现代码
- 使用ASP.NET一般处理程序或WebService返回JSON的实现代码