首页 > 代码库 > HSSFWorkbook + form + HttpServletResponse 实现excel的下载
HSSFWorkbook + form + HttpServletResponse 实现excel的下载
今天做了excel的导出下载,折腾了一天才发现ajax的dataType里面没有流类型,这就意味着不能用ajax来接受后台传来的输出流。但是可以用动态创建的form来代替。
下面是项目实践的部分源码:
1、后台Controller层(HSSFWorkbook创建excel的过程我写在了Service层,这里就不粘贴出来了):
1 //导出excel 2 @RequestMapping(value="http://www.mamicode.com/outPutExcel",method=RequestMethod.POST) 3 public @ResponseBody void outPutExcel(HSSFWorkbook workbook,HttpServletRequest request,HttpServletResponse response) throws IOException{ 4 //获取参数 5 String nd=request.getParameter("nd"); 6 String co_code=request.getParameter("co_code"); 7 //excel下载设置 8 OutputStream out=response.getOutputStream(); 9 response.setHeader("Content-Type","application/vnd.ms-excel");10 response.addHeader("Content-Disposition","attachment;filename=mydata.xls");11 response.setContentType("application/octet-stream");12 response.setCharacterEncoding("UTF-8");13 workbook=outPutExcelService.outPutExcel(nd, co_code);14 try{15 //返回数据流16 workbook.write(out);17 out.flush();18 out.close();19 }finally{20 out.flush();21 out.close();22 }23 }
2、前端js源码(需要注意18行,action的值前加了一个‘.‘ ,不然可能会404 ):
1 //获取选择路径,并导出excel 2 viewModel.saveExcel=function(){ 3 var co_code=""; 4 var nd=$("#select_nd_info").val(); //选择年度 5 var dw_value = http://www.mamicode.com/$("#select_dw_info").val(); 6 var info=viewModel.ipCompDataTable.getSimpleData(); 7 for(var i=0;i<info.length;i++){ 8 if(dw_value=http://www.mamicode.com/==info[i].co_name){ 9 co_code=info[i].co_code; 10 break;11 }12 } 13 //定义form,因为ajax不能接受 流类型数据14 var form = $("<form>");15 form.attr(‘style‘,‘display:none‘);16 form.attr(‘target‘,‘‘);17 form.attr(‘method‘, ‘post‘); 18 form.attr(‘action‘, ‘./data_status/outPutExcel‘);19 20 var input1 = $(‘<input>‘);21 input1.attr(‘trpe‘,‘hidden‘);22 input1.attr(‘name‘, ‘nd‘);23 input1.attr(‘value‘, nd);24 25 var input2 = $(‘<input>‘);26 input2.attr(‘trpe‘,‘hidden‘);27 input2.attr(‘name‘, ‘co_code‘);28 input2.attr(‘value‘, co_code);29 //将表单放到body中30 $(‘body‘).append(form);31 form.append(input1);32 form.append(input2); 33 form.submit();34 form.remove();35 }
3、运行项目,ok!
希望对你有帮助!
HSSFWorkbook + form + HttpServletResponse 实现excel的下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。