利用ajax导出Excel文件
来源:互联网 发布:国家顶级域名 中文域名 编辑:程序博客网 时间:2024/05/29 23:48
记得之前写过ajax无法弹出保存下载对话框,就直接使用form表单进行提交,下载Excel的。但是如果需要传递参数的话,需要使用隐藏空间,有时候还有些麻烦,而使用ajax传递参数很方便啊?!于是我们可以通过ajax导出Excel
htm代码如下:
<button type="button" class="btn green" onclick="rptDownLoad()"> 报 表 下 载 </button>javaScript脚本代码如下:
function rptDownLoad(){var rptId = $("#rptSelect").val();var date = $("#dateSelect").val(); var form = $("<form>"); form.attr('style', 'display:none'); form.attr('target', ''); form.attr('method', 'post'); form.attr('action', '/ODSMSPortlet/report/reportSys!exportRpt.action'); var input1 = $('<input>'); input1.attr('type', 'hidden'); input1.attr('name', 'rptId'); input1.attr('value', rptId); var input2 = $('<input>'); input2.attr('type', 'hidden'); input2.attr('name', 'date'); input2.attr('value', date); $('body').append(form); form.append(input1); form.append(input2); form.submit(); form.remove();}Action中处理如下:
/** * 报表下载 */public void exportRpt(){setDataObject();try{//项目中封装的dto可以直接获取js中传递的date和rptIdString date = dto.getInput("date").toString();dhlCommonService.queryForObject("reportSys.selectRptList", dto);String rptName = dto.getOutputForJSONObject().getString("rptName");//获取报表标题中英文数组String header = dto.getOutputForJSONObject().getString("upHeaders");String headers[] = header.split("\\|");int len = headers.length;String name[] = new String[len]; //title为英文标题String title[] = new String[len];//name为中文标题int index = 0;for(int i = 0 ; i<len ; i++){name[index] = headers[i].split("#")[0];title[index] = headers[i].split("#")[1];index++;}//查询sql,获取报表明细String sql = dto.getOutputForJSONObject().getString("sqlDesc");Map<String, Object> map = new HashMap<String,Object>();map.put("cycleId", date);dto.addInput("paramMap", map); dhlCommonService.queryJSONArrayBySql(sql, dto);JSONArray rptArray = dto.getOutputForJSONArray();//设置输出流OutputStream out = response.getOutputStream(); response.reset();String fileName = rptName+"_"+date;// 文件名 response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("gbk"),"iso8859-1")+".xlsx");response.setContentType("application/x-download; charset=UTF-8");//生成Excel sheet HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(fileName); //设置标题样式 HSSFCellStyle headStyle = wb.createCellStyle(); headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); headStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); headStyle.setFillForegroundColor((short)13); HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); headStyle.setFont(font); //设置内容样式 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式 HSSFRow row = sheet.createRow(0); HSSFCell cell = null; //为Excel添加表头 for(int i = 0 ; i<len ; i++){ cell = row.createCell(i); cell.setCellValue(name[i]); cell.setCellStyle(headStyle); //设置列表宽度 sheet.setColumnWidth(i,name[i].toString().length() * 800); } //为Excel添加数据 for(int j = 0 ; j<rptArray.size() ; j++){ JSONObject jo = (JSONObject) rptArray.get(j); row = sheet.createRow(j+1); for(int k = 0 ; k<title.length ; k++){ //按照标题数组取值 String content = jo.get(title[k]).toString(); cell = row.createCell(k); cell.setCellValue(content); cell.setCellStyle(style); } } //将excel写入到response输出流 wb.write(out); response.getOutputStream().flush(); response.getOutputStream().close(); }catch(Exception e){e.printStackTrace();}}
0 0
- 利用ajax导出Excel文件
- 导出excel 利用xml文件
- 利用ie导出excel文件的方法
- 利用POI导入和导出excel文件
- struts2利用poi导出excel文件
- 利用注解反射生成导出excel文件
- Java____利用HSSF导出、导入excel文件
- JAVA利用POI导出Excel模板文件
- Java利用POI实现导出excel文件
- 利用poi 导入导出excel文件
- 利用Aspose.Cells组件导出excel文件
- 文件下载利用poi导出excel
- 模仿ajax利用rest导出文件
- C#利用excel文件结构实现导出到excel
- C#利用Microsoft.Office.Interop.Excel导出excel文件
- ajax做excel导出
- 导出excel与ajax
- jquery ajax 导出excel
- 结构较复杂的xml和json互转
- iOS访问通讯录
- Golang之旅2:工程结构
- 毕设的开始——我的爆炸之旅
- Ubuntu16.04 安装flash
- 利用ajax导出Excel文件
- Golang之旅3:三种读文件方式
- android 源码编译&烧制
- JavaScript原生方法写瀑布流
- 第八周 OJ总结<3>-求值
- cocoa Unknown type name 'class'; did you mean 'Class'? 问题解决
- iOS 项目整体是竖屏,个别页面支持横屏
- AJAX简介
- BLE 绑定和配对