$.ajax异步请求无法下载文件到浏览器本地的问题
//open这种方式有个弊端,就是转的参数值不能太大,所以只能用jquery创建表单form在提交(ajax异步请求不会触发浏览器下载文件的功能) var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1) {//判断是否IE浏览器 window.location.href(url); }else{ window.open(url,"xxx"); }
方法2 js前端
//导出 $("#exportData").click(function() { var myqx =document.getElementById("qxId").contentWindow.document.getElementById("myqx"); var myqxD = $(myqx).val(); var id = $("input[name='myHidId']").val(); var url = __ctx+'/hyddrbnew/hyddrbnew/hyddrb/exportExcelDdrb.ht'; var form = $("<form>"); form.attr("style","display:none"); form.attr("target","_blank"); form.attr("method","post"); form.attr("action",url); var input1 = $("<input>"); input1.attr("type","hidden"); input1.attr("name","id"); input1.attr("value",id); var input2 = $("<input>"); input2.attr("type","hidden"); input2.attr("name","myqxD"); input2.attr("value",myqxD); $("body").append(form); form.append(input1); form.append(input2); form.submit(); form.remove(); });
方法2(java后端)
@RequestMapping({ "exportExcelDdrb" })
@Action(description = "导出excel")
public void exportExcelDdrb(HttpServletRequest request, HttpServletResponse response) throws Exception {
String id = RequestUtil.getString(request, "id");
String imageMsg = RequestUtil.getString(request, "myqxD");
//取得实体类数据
Hyddrb yjbb = new Hyddrb();
yjbb = (Hyddrb) hyddrbService.getById(Long.valueOf(Long.parseLong(id)));
String dirPath = FileUtil.getRootPath() + File.separator + "commons" + File.separator + "template" + File.separator + "hydlbbTemplate" + File.separator;
String fileName = "expHyTabDdrb.xls";
// String fileName = "expHyTabDdrb.xlsx";
FileInputStream inStream = new FileInputStream(new File(dirPath + fileName));
//xls2003版
HSSFWorkbook wb = new HSSFWorkbook(inStream);
this.drawImage(wb, imageMsg);
this.initSheetCell(wb, yjbb);
//xlsx2007版
// XSSFWorkbook wbxlsx = new XSSFWorkbook(inStream);
// this.drawImage_xlsx(wbxlsx, imageMsg);
// this.initSheetCell_xlsx(wbxlsx, yjbb);
fileName = "调度日报_" + new SimpleDateFormat("yyyy-MM-dd").format(yjbb.getRq()) ;
//其实两套代码都可以,最终结果以下面给定的后缀作为生成excel的后缀,即03版还是07版
fileName += ".xls";
// fileName += ".xlsx";
response.setContentType("application/excel");
response.addHeader("Content-Disposition", "attachment;filename=" + new String((fileName).getBytes("gb2312"), "ISO8859-1"));
OutputStream out = response.getOutputStream();
wb.write(out);
// wbxlsx.write(out);
out.flush();
out.close();
}

浙公网安备 33010602011771号