想得到的效果是,在网页上点击导出按钮,弹出文件保存框,输入文件名并选择路径后保存。可能是由于浏览器的安全机制,一直没能找到合适的解决方案,就采用了其它的一些替代方案。
思路是:后台一般处理程序查询数据库在服务器上生成excel文件,再将文件路径传递给前台,前台生成下载链接
由于ActiveX只有IE支持,不能以ActiveXObject方式打开excel文件,可以在前台可以通过a标签来生成下载链接,也可以直接跳转url或下载文件
1 //导出数据 2 function exportexcel(postdata) { 3 $.ajax({ 4 url: "../Handler/ExportExcelHandler.ashx", 5 type: "POST", 6 dataType: "TEXT", 7 data: postdata, 8 success: function (responsedata) { 9 var url = '../export/' + responsedata; 10 var elemIF = document.createElement("iframe"); 11 elemIF.src = url; 12 elemIF.style.display = "none"; 13 document.body.appendChild(elemIF); 14 }, 15 error: function (XMLHttpRequest, textStatus, errorThrown) { 16 alert("导出失败:" + textStatus); 17 } 18 }); 19 }
还有一种方法是使用window.open()方法,但是会被多数浏览器拦截,因此不推荐使用