利用jQuery npoi插件 asxh正常处理文件实现excel的下载
利用jQuery npoi插件 asxh一般处理文件实现excel的下载
最近开发的过程中遇到这么一个问题,利用ajax和ashx文件实现下载功能。发现代码调试走完之后并没有弹出下载框。
研究了一段时间之后发现解决这种问题有两种方法,1.ajax获取数据集在前台做处理实现导出(个人不大喜欢这样有兴趣自行度娘)。2.既然都请求服务端了那就服务端搞定这件事。
下面说一下第二种方法:这种方法的实质上没有使用ajax的方式。
先说一下一般处理文件的写法
public class DownLoadExcel : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "application/vnd.ms-excel"; context.Response.ContentEncoding = Encoding.UTF8; context.Response.Charset = ""; context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("测试", Encoding.UTF8)); //excel中插入数据 HSSFWorkbook workbook = new HSSFWorkbook(); Sheet sheet = workbook.CreateSheet("excel标签名称"); Row rowHeader = sheet.CreateRow(0);//设置表头 rowHeader.CreateCell(0).SetCellValue("第一列"); Row rowData= sheet.CreateRow(1);//插入一行数据 rowData.CreateCell(0).SetCellValue("值"); workbook.Write(context.Response.OutputStream); workbook.Dispose(); } public bool IsReusable { get { return false; } }
1.利用<a></a>标签
<a href="test.ashx"></a>
这种方法不方便传入参数。
2.利用表单发送请求
可以用div将表单隐藏如下
<a id="aexport" href="#" onclick="aexport();">导出</a> <div style="display:none"> <form target="_blank" method="post"> </form> </div>
js代码如下
function aexport() { var url ="test.ashx?canshu1=1" $("form").attr("action", url);//设置表单提交的对象 $("form").submit();//提交表单 }