首页 > 技术文章 > poi 导出Excel --实战代码(导出一行过一排排那种/工具类导出/复制代码用)--历史保留版,可看最新版

rdchen 2020-11-18 12:03 原文

html代码

   <a class="btn btn-primary fa fa-export" href="javascript:void(0);" onclick="expExcel()"><span>导出excel</span></a>

js代码

function expExcel() {
        
        var ids=new Array();
        $("input:checkbox:checked").each(function(){
            ids.push($(this).attr("id"));
        });
        if(ids.length==0){
            alert("请至少选中一条记录");
            return;
        }
        if (confirm("导出选中页面数据?")) {        
            var url = __ctx + '/platform/xxx/xxx/exportExcel.htm?myId='+ ids;
            var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
            if (userAgent.indexOf("compatible") > -1
                    && userAgent.indexOf("MSIE") > -1) {//判断是否IE浏览器
                window.location.href(url);
            } else {
                window.open(url, "导出报表");
            }
        }
    }

java代码1

@RequestMapping({ "exportExcel" })
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        String[] aryIds = RequestUtil.getStringAryByStr(request, "myId");
        QueryFilter queryFilter = getQuerFilter(request);
        String myIds = "";

        for (int i = 0; i < aryIds.length; i++) {
            String tmp = aryIds[i].replace("jqg_jzjxjhGrid_", "");

            if (i != aryIds.length - 1) {
                myIds += "'" + tmp + "',";
            } else {
                myIds += "'" + tmp + "'";
            }
        }
        queryFilter.addParamsFilter("whereSql", "MY_ID_ in (" + myIds + ")");
        queryFilter.addParamsFilter("orderBySql", "KS ASC");

        List<Jzjxjh> query = jzjxjhManager.query(queryFilter);

        String title = "xxx计划";
        String[] headers = {"序号","xx","xx","xx","开始","结束","工期","xx","发电类型"};
        Integer[] columnWidth={18,18,18,18,18,18,18,18,18};
        
        String[][] values = new String[query.size()][headers.length];
        for (int i = 0; i < query.size(); i++) {
            Jzjxjh e = query.get(i);
            values[i][0]=e.getXh()+"";
            values[i][1]=e.getDw();
            values[i][2]=e.getJz();
            values[i][3]=e.getRl()+"";
            values[i][4]=sdf.format(e.getKs());
            values[i][5]=sdf.format(e.getJs());
            values[i][6]=e.getGq()+"";
            values[i][7]=e.getLx();
            values[i][8]=e.getZt();
        }
        
        HSSFWorkbook wb = ExportExcelUtil.getHSSFWorkbook(title, headers, values,columnWidth);        
        
        String fileName = "xxxx计划_" + ".xls";
        ExportExcelUtil.exportExcel(request, response, wb, fileName);
    
    }

 java代码2(跟上面1差不多,优点用到了反射类工具类,不用一个个get实体类的数据方便快捷,该工具类也可以从本博客util标签中找)

@RequestMapping({ "exportExcel" })
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String[] aryIds = RequestUtil.getStringAryByStr(request, "myId");
        QueryFilter queryFilter = getQuerFilter(request);
        String myIds = "";

        for (int i = 0; i < aryIds.length; i++) {
            String tmp = aryIds[i].replace("jqg_jzjxjhGrid_", "");

            if (i != aryIds.length - 1) {
                myIds += "'" + tmp + "',";
            } else {
                myIds += "'" + tmp + "'";
            }
        }
        queryFilter.addParamsFilter("whereSql", "MY_ID_ in (" + myIds + ")");
        queryFilter.addParamsFilter("orderBySql", "KS ASC");

        List<Jzjxjh> query = jzjxjhManager.query(queryFilter);

        String title = "xxx计划";
        String[] headers = {"序号","单位","机组","容量","开始","结束","工期","类型","发电类型"};
        Integer[] columnWidth={18,18,18,18,18,18,18,18,18};
        String[] headersVar = {"xh","dw","jz","rl","ks","js","gq","lx","zt"};
        
        String[][] values = new String[query.size()][headers.length];
        for (int i = 0; i < query.size(); i++) {
            Jzjxjh obj = query.get(i);
            for (int j = 0; j < headersVar.length; j++) {
                values[i][j]=ReflectUtil.getStringValue(headersVar[j], obj, "yyyy/MM/dd");
            }
            
        }
        
        HSSFWorkbook wb = ExportExcelUtil.getHSSFWorkbook(title, headers, values,columnWidth);        
        
        String fileName = "xxx计划_" + ".xls";
        ExportExcelUtil.exportExcel(request, response, wb, fileName);
    
    }

 

 

适用场景:poi 4.0.1  ,ExportExcelUtil.java可以在本博客util中找

导出效果

第一行是合并单元格的一个标题

第二行是表头

第三行开始每一列都是数据

效果图如下

 

推荐阅读