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();
    }

}

 


 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章