Grails导出csv格式的文件

来源:互联网 发布:淘宝手机收藏地址转换 编辑:程序博客网 时间:2024/05/17 06:49

grails让csv报表的导出变得简单,如果是以前的SSH,这个操作就麻烦的多了,grails导出csv的原理其实就是运用消息头和ContentType,前端部分就是用jquery和一个jquery插件就OK了

1.csv导出前台界面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <script type="text/javascript" src="/easyui/jquery-1.8.0.min.js"  ></script><script type="text/javascript" src="/js/jquery.count_down_2.0.js"></script><script type="text/javascript">  $("document").ready(function(){   });  var intervalId;  function intervaReportHandlerTag(){         intervalId = setInterval("searchReportHandlerTag()",5000);  }  function loadout(){        intervaReportHandlerTag();       //$("#sub").attr("disabled", "disabled");          $('#sub').countDownInit(180, '导出结束', function() {  $('#sub').countDownStop();  alert('网络超时,请稍后再试!');  }, null, null, '导出中 ');            var that=$("#sub");           $("#form").submit();           $('#sub').countDownStart();  }  //报表处理完成标识  function searchReportHandlerTag(){       $.post("/excelExport/searchReportHandlerTag",null,function(res){           if(res.flag){                        $('#sub').countDownStop();               $("#sub").removeAttr("disabled");               $('#sub').val("导出为excel");               clearInterval(intervalId);           }      },'json');  }</script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>导出csv</title></head><body>  <form id="form" action="/excelExport/exportExcel" method="POST">    输入信息:<textarea rows="3" cols="40" name="message"></textarea><br/>    <input type="button" id="sub" value="导出为excel" onclick="loadout()"/>  </form></body></html>

界面如下:

2.控制器里的导出方法和导出状态获取的代码

def exportExcel={session.loadOver=falseresponse.setContentType("text/csv");response.setContentType("application/csv;charset=GBK");response.setHeader("Content-Disposition", "attachment;FileName=test.csv");OutputStream out = null;try {//out = new FileOutputStream(new File("d:\\text.csv"));out=response.getOutputStream();}catch (Exception e) {e.printStackTrace();}StringBuffer head = new StringBuffer();head.append("歌手名称,歌曲");head.append("\n");out.write(head.toString().getBytes("GBK"));out.flush();def sp=params.message.split(";");def buf=new StringBuffer();for(int i=0;i<sp.length;i++){def sp2=sp[i].split(",");def bf=new StringBuffer();  bf.append("\""+sp2[0]+"\"");bf.append(",\""+sp2[1]+"\"");bf.append("\n");buf.append(bf.toString());}out.write(buf.toString().getBytes("GBK"));out.flush();out.close();session.loadOver=true;}//导出标识def searchReportHandlerTag = {JSONObject json=new JSONObject()if(session.loadOver){}else{session.loadOver=false;  //如果null定义为已处理完}json.put("flag", session.loadOver);render json.toString()}

最后来看下,导出时的效果

csv显示如下所示:


0 0
原创粉丝点击