导出查询结果到excle

实现功能 输入查询结果 点击导出查询结果 导出到excle表。

前台代码为:

{id:'btn_export',
                                        text : '导出查询结果',
                                        iconCls : 'icon-print',
                                        handler : function() {
                                                $.messager.confirm('温馨提示','确认导出?',function(r) {
                                                    if (r) {
                                                        export_data=serializeForm($('#mysearch'));
                                                        $('#downform').form('submit', {
                                                            url : "<%=basePath%>dayrec/export",
                                                            method : "post",
                                                            onSubmit: function(param){
                                                                param.search =export_data;
                                                                param.date_start=export_data.date_start;
                                                                param.date_end=export_data.date_end;
                                                            },
                                                            error : function() {
                                                                $.messager.alert('温馨提示', '导出失败');
                                                            }
                                                        });
                                                    } else {
                                                        return;
                                                    }
                                                });
                                        }

此处涉及到了一个序列化form表单的方法。为:

//js方法:序列化表单             
function serializeForm(form) {
    var obj = {};
    $.each(form.serializeArray(), function(index) {
        if (obj[this['name']]) {
            obj[this['name']] = obj[this['name']] + ',' + this['value'];
        } else {
            obj[this['name']] = this['value'];
        }
    });
    return obj;
}

后台代码

@RequestMapping(value = "/export", method = RequestMethod.POST)
public @ResponseBody String export(@ModelAttribute DayRecruit rec, String date_start,String date_end, HttpSession session, HttpServletResponse response) {
    Account  account=this.getStaticAccount();
    List<Object[]> dataset = dayRecruitService.export(rec,date_start,date_end,account); 
    String[] headers = new String[]{"日期","所属公司","招聘企业","面试人数","入职人数","入职率(%)","备注"}; 
    
    if(dataset == null || dataset.size() < 1){
        return "没有查找到相应的数据,请刷新数据后重试";
    }
    response.setContentType("application/vnd.ms-excel");//;charset=utf-8
    response.setHeader("Content-Disposition", "attachment;filename=dayRecruit.xls");
    response.setHeader("Pragma","No-cache");
    response.setHeader ( "Cache-Control", "no-store"); 
    try {
        OutputStream sos = response.getOutputStream();

        ExportExcelsUtil.exportExcel(headers, dataset, sos);//如果不需要额外数据exportExcel(headers,dataset, sos)
      //  ExportExcelsUtil.exportExcel(2,1,2,"用户信息",headers,dataset, sos);//如果不需要额外数据exportExcel(headers,dataset, sos)
        response.flushBuffer();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "成功导出"+dataset.size()+"条用户数据。";
}

其实和导出选中行操作过程一样的,区别是。导出所选行,前台传入是选中行的id.导出查询结果,前台传入的是查询条件,可以直接复用初始化数据时的方法。

具体参考

 

http://www.cnblogs.com/wenjieyatou/p/6120796.html

 

posted @ 2016-12-01 10:42  文洁丫头  阅读(215)  评论(0编辑  收藏  举报