java中用form表单提交数据导出excel

js中的代码(红色代码为重点):

$("#exportBtn").click(function () {
    var attr = [];
    if($("#allChoose").is(":checked")){
        $("input[name='simChoose']").each(function () {
            attr.push($(this).val());
        });
    }else{
        $("input[name='simChoose']:checked").each(function () {
            attr.push($(this).val());
        });
    }
    console.log(attr);
    if(attr.length<=0){
        alert("请选择需要导出的数据...");
        return;
    }else{
        //要提交到后台的数据
        var ids = attr.join(",");
        alert("数据导出完成");
        var form = $("<form>");
        form.attr('style','display:none');
        form.attr('mothod','post');
        form.attr('action',"${ctx!''}/goods/salesCapPrice/exportRecord.html");
        //将要提交到后天的数据放到一个隐藏的input框中
        var input1 = $('<input>');
        input1.attr('type','hidden');
        input1.attr('name','ids');
        input1.attr('value',ids);
        form.append(input1);
        //另外一个需要提交的数据
        var input2 = $('<input>')
        input2.attr('type','hidden');
        input2.attr('name','type');
        input2.attr('value',2);
        form.append(input2);

        $('body').append(form);
        form.submit();   //表单提交

    }

});

后台的代码:

获取需要的数据

public void exportRecord(){
    String ids = getRequest().getParameter("ids");
    String type = getRequest().getParameter("type");
    //不同导出excel的名字
    String fileName="";
    List<String>  titles= new ArrayList();
    if(StringUtils.equals("0",type)){
        fileName = "高限价维护提交审核记录";
        titles.add("提交审核时间");
        titles.add("提交审核原因");
        titles.add("审核小类数量");
        titles.add("审核状态");
        titles.add("提交人");
        titles.add("审核人");
        titles.add("审核时间");
        titles.add("开始执行时间");
    }else if(StringUtils.equals("1",type)){
        fileName = "高限价审核待处理";
        titles.add("商品小类数量");
        titles.add("提交审核原因");
        titles.add("申请人");
        titles.add("申请执行时间");
        titles.add("提交审核时间");
    }else {
        fileName = "高限价审核已完成";
        titles.add("商品小类数量");
        titles.add("提交审核原因");
        titles.add("申请人");
        titles.add("提交审核时间");
        titles.add("审核时间");
        titles.add("开始执行日期");
        titles.add("审核结果");
    }

    if(ids != null && type != null){
        List<String> idList = Arrays.asList(ids.split(","));
        List<SalesCapPriceRecord> list = goodsAuditUpOffService.exportRecord(idList);
        HttpServletRequest request = getRequest();
        HttpServletResponse response = getResponse();
        try {
            int index = exportRecordCount(request,response,fileName,list,titles,type);
            logger.info("商品高限价导出成功 导出行数:index:"+index);
        }catch (Exception e){
            logger.info("商品高限价导出失败");
            e.printStackTrace();
        }
    }
}
 

写入excel

public int exportRecordCount(HttpServletRequest request, HttpServletResponse response, String fileName, List<SalesCapPriceRecord> list,List<String> titles,String type
                                              ){
    int index = 0;
    OutputStream osr = null;
    SXSSFWorkbook wb = null;
    try {
        fileName = fileName + "-" + DateUtil.dateToString(new Date(), "yyyyMMdd");

        osr = response.getOutputStream();
        wb = new SXSSFWorkbook(rowaccess);
        org.apache.poi.ss.usermodel.Sheet sheet = wb.createSheet("导出记录");
        //普通单元格格式
        CellStyle strStyle = createStrCellStyle(wb);

        // 整数单元格格式
        CellStyle intStyle = createIntCellStyle(wb);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
        UserInfoQuery userInfoQuery = new UserInfoQuery();
        UserInfoQuery userInfoQuery1 = new UserInfoQuery();
        //
        if(StringUtils.equals("0",type)){
            Row row0 = sheet.createRow(0);
            row0.setHeight((short)700);
            for(int i=0;i<titles.size();i++){
                Cell tiltleCell0 = row0.createCell(i);
                tiltleCell0.setCellValue(titles.get(i));
                tiltleCell0.setCellStyle(strStyle);
            }
            for(int i=0;i<list.size();i++){
                index = index+1;
                Row row = sheet.createRow(i+1);
                row.setHeight((short) 500);
                Cell indexCell0 = row.createCell(0);
                indexCell0.setCellValue(list.get(i).getSubmitAuditDate()==null?"" : sdf.format(list.get(i).getSubmitAuditDate()) );
                indexCell0.setCellStyle(strStyle);

                Cell indexCell1 = row.createCell(1);
                indexCell1.setCellValue(list.get(i).getSubmitAuditReason() == null ?"" : list.get(i).getSubmitAuditReason());
                indexCell1.setCellStyle(strStyle);

                Cell indexCell2 = row.createCell(2);
                indexCell2.setCellValue(list.get(i).getSmlClassNum() == null ? 0 : list.get(i).getSmlClassNum());
                indexCell2.setCellStyle(intStyle);

                Cell indexCell3 = row.createCell(3);
                if(StringUtils.equals("0",list.get(i).getAuditState())){
                    indexCell3.setCellValue("待审核");
                    indexCell3.setCellStyle(strStyle);
                }else if(StringUtils.equals("1",list.get(i).getAuditState())){
                    indexCell3.setCellValue("审核通过");
                    indexCell3.setCellStyle(strStyle);
                }else{
                    indexCell3.setCellValue("审核驳回  理由:"+list.get(i).getAuditReason());
                }

                Cell indexCell4 = row.createCell(4);
                userInfoQuery.setId(list.get(i).getSubmitUser());
                List<UserInfo> userInfos = baseService.find(U_SERVICE,userInfoQuery);
                indexCell4.setCellValue(userInfos.get(0).getRealName());
                indexCell4.setCellStyle(strStyle);

                Cell indexCell5 = row.createCell(5);
                userInfoQuery1.setId(list.get(i).getAuditUser());
                List<UserInfo> userInfo1 = baseService.find(U_SERVICE,userInfoQuery);
                indexCell5.setCellValue(userInfo1.get(0).getRealName());
                indexCell5.setCellStyle(strStyle);

                Cell indexCell6 = row.createCell(6);
                indexCell6.setCellValue(list.get(i).getAuditDateEnd() == null? "": sdf.format(list.get(i).getAuditDateEnd()));
                indexCell6.setCellStyle(strStyle);

                Cell indexCell7 = row.createCell(7);
                indexCell7.setCellValue(list.get(i).getExecuteDate() == null ?"" : sdf.format(list.get(i).getExecuteDate()));
                indexCell7.setCellStyle(strStyle);

            }
        }else if(StringUtils.equals("1",type)){
            Row row0 = sheet.createRow(0);
            row0.setHeight((short)700);
            for(int i=0;i<titles.size();i++){
                Cell tiltleCell0 = row0.createCell(i);
                tiltleCell0.setCellValue(titles.get(i));
                tiltleCell0.setCellStyle(strStyle);
            }
            for(int i=0;i<list.size();i++){
                index = index+1;
                Row row = sheet.createRow(i+1);
                row.setHeight((short) 500);
                Cell indexCell0 = row.createCell(0);
                indexCell0.setCellValue(list.get(i).getSmlClassNum()==null?0 : list.get(i).getSmlClassNum());
                indexCell0.setCellStyle(strStyle);

                Cell indexCell1 = row.createCell(1);
                indexCell1.setCellValue(list.get(i).getSubmitAuditReason() == null ?"" : list.get(i).getSubmitAuditReason());
                indexCell1.setCellStyle(strStyle);

                Cell indexCell2 = row.createCell(2);
                userInfoQuery.setId(list.get(i).getSubmitUser());
                List<UserInfo> userInfos = baseService.find(U_SERVICE,userInfoQuery);
                indexCell2.setCellValue(userInfos.get(0).getRealName());
                indexCell2.setCellStyle(strStyle);

                Cell indexCell3 = row.createCell(3);
                indexCell3.setCellValue(list.get(i).getExecuteDate() == null ?"" : sdf.format(list.get(i).getExecuteDate()));
                indexCell3.setCellStyle(strStyle);

                Cell indexCell4 = row.createCell(4);
                indexCell4.setCellValue(list.get(i).getSubmitAuditDate()==null?"" : sdf.format(list.get(i).getSubmitAuditDate()) );
                indexCell4.setCellStyle(strStyle);
            }
        }else{
           

Row row0 = sheet.createRow(0);
            row0.setHeight((short)700);
            for(int i=0;i<titles.size();i++){
                Cell tiltleCell0 = row0.createCell(i);
                tiltleCell0.setCellValue(titles.get(i));
                tiltleCell0.setCellStyle(strStyle);
            }
            for(int i=0;i<list.size();i++){
                index = index+1;
                Row row = sheet.createRow(i+1);
                row.setHeight((short) 500);
                Cell indexCell0 = row.createCell(0);
                indexCell0.setCellValue(list.get(i).getSmlClassNum() == null ? 0 : list.get(i).getSmlClassNum());
                indexCell0.setCellStyle(intStyle);

                Cell indexCell1 = row.createCell(1);
                indexCell1.setCellValue(list.get(i).getSubmitAuditReason() == null ?"" : list.get(i).getSubmitAuditReason());
                indexCell1.setCellStyle(strStyle);

                Cell indexCell2 = row.createCell(2);
                userInfoQuery.setId(list.get(i).getSubmitUser());
                List<UserInfo> userInfos = baseService.find(U_SERVICE,userInfoQuery);
                indexCell2.setCellValue(userInfos.get(0).getRealName());
                indexCell2.setCellStyle(strStyle);

                Cell indexCell3 = row.createCell(3);
                indexCell3.setCellValue(list.get(i).getSubmitAuditDate()==null?"" : sdf.format(list.get(i).getSubmitAuditDate()) );
                indexCell3.setCellStyle(strStyle);

                Cell indexCell4 = row.createCell(4);
                indexCell4.setCellValue(list.get(i).getAuditDateEnd() == null? "": sdf.format(list.get(i).getAuditDateEnd()));
                indexCell4.setCellStyle(strStyle);

                Cell indexCell5 = row.createCell(5);
                indexCell5.setCellValue(list.get(i).getExecuteDate() == null ?"" : sdf.format(list.get(i).getExecuteDate()));
                indexCell5.setCellStyle(strStyle);

                Cell indexCell6 = row.createCell(6);
                if(StringUtils.equals("0",list.get(i).getAuditState())){
                    indexCell6.setCellValue("待审核");
                    indexCell6.setCellStyle(strStyle);
                }else if(StringUtils.equals("1",list.get(i).getAuditState())){
                    indexCell6.setCellValue("审核通过");
                    indexCell6.setCellStyle(strStyle);
                }else{
                    indexCell6.setCellValue("审核驳回  理由:"+list.get(i).getAuditReason());
                    indexCell6.setCellStyle(strStyle);
                }
            }
        }
        setRequestHeader(request, response, fileName);
        wb.write(osr);
        osr.flush();
        osr.close();

    }catch (FileNotFoundException e){
        e.printStackTrace();
        index = 0;
    } catch (IOException e) {
        index = 0;
        e.printStackTrace();
    } catch (Exception e) {
        index =0;
        e.printStackTrace();
    }
    return index;

}
 

//设置table的样式

public static CellStyle createStrCellStyle(SXSSFWorkbook workbook) {
    CellStyle strStyle = workbook.createCellStyle();
    strStyle.setAlignment(CellStyle.ALIGN_CENTER);// 设置水平居中
    strStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);// 设置垂直居中
    return strStyle;

}

public static CellStyle createIntCellStyle(SXSSFWorkbook workbook) {
    // 整数单元格格式
    CellStyle intStyle = workbook.createCellStyle();
    intStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
    intStyle.setAlignment(CellStyle.ALIGN_CENTER);// 设置水平居中
    intStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);// 设置垂直居中
    return intStyle;
}

public static void setRequestHeader(HttpServletRequest request, HttpServletResponse response, String fileName) {

    try {
        String agent = (String) request.getHeader("USER-AGENT");
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        fileName = fileName + DateUtil.dateToString(new Date(), "yyyy-MM-dd");
        if (agent != null && (agent.contains("Firefox") || agent.contains("Safari"))) {
            // FF
            fileName = "=?UTF-8?B?" + (new String(Base64.encodeBase64(fileName.getBytes("UTF-8")))) + "?=";
        } else {
            // IE
            String os = System.getProperty("os.name");
            fileName = URLEncoder.encode(fileName, "UTF-8");
            if (os.indexOf("Linux") != -1) {
                fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
            } else if (os.indexOf("Windows") != -1) {
                fileName = new String(fileName.getBytes("GB2312"), "ISO8859-1");
            }
        }
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


 


 

猜你喜欢

转载自blog.csdn.net/qq_35872777/article/details/86741761
今日推荐