asp.net导出excel表格的总结

需求:把客户所需要的数据不仅显示在网页上,还需要可以通过excel表格导出。
上面是客户提的要求,为了实现这个功能,我查了很多博客资料,但是大部分都是给你一段代码,并没有告诉你,这段代码用在什么地方,需要什么样的引用。下面是我研究的一点心得:

1.通过查阅资料,找到NPOI导出excel的方法。
通过一般处理程序.ashx文件
<%@ WebHandler Language="C#" Class="DownExcel" %>
using System;
using System.Web;
public class DownExcel : IHttpHandler {
public void ProcessRequest (HttpContext context) {
//指定输出类型
context.Response.ContentType = "application/x-excel";
//指定文件编码
string filename = HttpUtility.UrlEncode("客户资料表.xls");
//添加http报文头输出类型
context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", filename));
//创建excel文件表的标题
NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.HSSF.UserModel.HSSFSheet sheet = (NPOI.HSSF.UserModel.HSSFSheet)workbook.CreateSheet();
NPOI.HSSF.UserModel.HSSFRow row = (NPOI.HSSF.UserModel.HSSFRow)sheet.CreateRow(0);
NPOI.HSSF.UserModel.HSSFCell cell0 = ( NPOI.HSSF.UserModel.HSSFCell)row.CreateCell(0);
cell0.SetCellValue("客户名称");
NPOI.HSSF.UserModel.HSSFCell cell1 = ( NPOI.HSSF.UserModel.HSSFCell)row.CreateCell(1);
cell1.SetCellValue("车辆类型");
NPOI.HSSF.UserModel.HSSFCell cell2 = ( NPOI.HSSF.UserModel.HSSFCell)row.CreateCell(2);
cell2.SetCellValue("购买价格");
//输出相关客户信息
for (int x = 1; x < 8; x++)
{
NPOI.HSSF.UserModel.HSSFRow rowx = ( NPOI.HSSF.UserModel.HSSFRow)sheet.CreateRow(x);
NPOI.HSSF.UserModel.HSSFCell c0 = ( NPOI.HSSF.UserModel.HSSFCell)rowx.CreateCell(0);
c0.SetCellValue("cust"+x.ToString());
NPOI.HSSF.UserModel.HSSFCell c1 = ( NPOI.HSSF.UserModel.HSSFCell)rowx.CreateCell(1);
c1.SetCellValue(x.ToString() + x.ToString());
NPOI.HSSF.UserModel.HSSFCell c2 = ( NPOI.HSSF.UserModel.HSSFCell)rowx.CreateCell(2);
c2.SetCellValue(x * 200);
}
//将文本流输出到客户端
workbook.Write(context.Response.OutputStream);
}
public bool IsReusable {
get {
return false;
}
}
}

上面的代码需要npoi的引用,添加这个引用之后,才可以使用NPOI的类以及方法。npoi的引用可以通过下面的网址下载:
http://npoi.codeplex.com/releases/

2.在找到这个方法之后,我把这段代码改成自己需要的代码后,放入到$.post(“xxxxx.ashx”)文件中,目的是希望可以通过一个程序从数据库中查询到所需要的数据,并且把他导出来,同时又可以返回给前台页面。但是失败了,怎么都没有用,说明返回给前台页面和导出的程序不能放在一起。

3.因为是要根据获得的参数,来查询数据库中数据,一般使用的是 .post .post传入参数是可以,但这个ashx文件并没有弹出下载excel表格的弹窗。后来想到在返回前台页面的ashx代码里把查询条件传入session域中,在导出数据的ashx中通过session区出来。
这里写图片描述
注意的是,ashx文件中使用session域需要上图中的引用和继承。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值