• Java 导出Excel


    前台代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <button class="btn btn-sm btn-success" type="submit" id="detailEp" onclick="return exportCheck(true);" forbid="yes">
        <i class="icon-arrow-right bigger-110"></i> 导出
    </button>
    <br><script>
    $(function() {
        var timer = "";
    });
     
    //点击导出按钮时禁用导出按钮
    $("#myForm").submit(function() {
        $("button[type=submit]",this).attr("disabled","disabled");
        //提交导出后定时去查看有没有导出成功
        timer = setInterval(refrashPg,1000);
    })
     
    //导出成功后会放开导出按钮的禁用
    function refrashPg() {
        if (getCk() =="1") {
            clearInterval(timer);
            $("#detailEp").removeAttr("disabled");
        }
        delCk();
    }
    //js获取到cookie
    function getCk() {
        debugger
        var ck = document.cookie.split(";");
        var ckname = "";
        for (var i = 0;i<ck.length;i++) {
            var arr = ck[i].split("=");
            if (arr[0] =="updtstatus") {
                ckname = arr[1];
                break;
            }
        }
        return ckname;
    }
    //js删除掉cookie
    function delCk() {
        var exp = new Date();
        var name = "updtstatus";
        exp.setTime(exp.getTime()-1000);
        var cval = getCk();
        document.cookie = name  + "=" + cval + "; expires=" + exp.toGMTString();
    }
    }
    1
    </script>

      后台导出代码就是普通的Java POI代码:

    复制代码
     1 public void buildExcelDocument(Map<String, Object> obj,String fileName,String type, 
     2              HttpServletRequest request, HttpServletResponse response)  
     3             throws Exception {  
     4         HSSFWorkbook workbook = new HSSFWorkbook();  
     5         if ("1".equals(type)) {
     6             List<Map<String, Object>> contentList =  (List<Map<String, Object>>) obj.get("content");  
     7             HSSFSheet sheet = workbook.createSheet("sheet1");//创建Excel的版本是2003-2007(xls) 如果需要2010的话,用 XSSFSheet   
     8             Map<String,String>  titleList = (Map<String, String>) obj.get("title");
     9             //表头的key 对应内容listMap中的map的key
    10             List<String> mkey = new ArrayList<String>();
    11             //表头的value 表头
    12             List<String> mvalue = new ArrayList<String>();
    13             Iterator<Entry<String, String>> it = titleList.entrySet().iterator();
    14             while(it.hasNext()){
    15                 @SuppressWarnings("rawtypes")
    16                 java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
    17                 mkey.add((String) entry.getKey());
    18                 mvalue.add((String) entry.getValue());
    19             }
    20             sheet.setDefaultColumnWidth((short) 12);    
    21             HSSFCell cell = null;  
    22             for (int i = 0;i<mvalue.size();i++) {
    23                 cell = getCell(sheet, 0, i);
    24                 setText(cell, mvalue.get(i));
    25             }
    26             
    27             for (short i = 0; i < contentList.size(); i++) {    
    28                 HSSFRow sheetRow = sheet.createRow(i+1);   
    29                 Map<String, Object> entity = contentList.get(i);  
    30                 for (int j = 0;j< mkey.size();j++) {
    31                         if (entity.get(mkey.get(j)) instanceof String) {
    32                             sheetRow.createCell(j).setCellValue((String)entity.get(mkey.get(j)));
    33                         } else if (entity.get(mkey.get(j)) instanceof Double) {
    34                             sheetRow.createCell(j).setCellValue((Double)entity.get(mkey.get(j)));
    35                         } else if (entity.get(mkey.get(j)) instanceof Date){
    36                             String date = (entity.get(mkey.get(j))).toString();
    37                             sheetRow.createCell(j).setCellValue(date.substring(0, 10));
    38                         } else if (entity.get(mkey.get(j)) instanceof BigDecimal){
    39                             sheetRow.createCell(j).setCellValue((entity.get(mkey.get(j))).toString());
    40                         }
    41                     }
    42                 }
    43             }
    44         } else if ("2".equals(type)) {
    45             List<String[]> contentList =  (List<String[]>) obj.get("content");  
    46             HSSFSheet sheet = workbook.createSheet("sheet1");    
    47             String[]  titleList = (String[]) obj.get("title");
    48             HSSFCell cell = null;  
    49             for (int i = 0;i<titleList.length;i++) {
    50                 cell = getCell(sheet, 0, i);
    51                 setText(cell, titleList[i]);
    52             }
    53             for (short i = 0; i < contentList.size(); i++) {    
    54                 HSSFRow sheetRow = sheet.createRow(i+1); 
    55                 String[] detail = contentList.get(i);
    56                 for (int j = 0;j< detail.length;j++) {
    57                     sheetRow.createCell(j).setCellValue((String)contentList.get(i)[j]);
    58                 }
    59             }
    60         }
    61         
    62        //设置下载时客户端Excel的名称     
    63         String filename = fileName + ".xls";  
    64       //处理中文文件名  
    65         filename = Chineseutil.encodeFilename(filename, request);  
    66         response.setContentType("application/Vnd.ms-excel;charset=UTF-8");     
    67         response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("gb2312"), "iso8859-1"));     
    68         OutputStream ouputStream = response.getOutputStream();
    69         workbook.write(ouputStream);     
    70         
    71         //导出数据后将信息存入cookie
    72      Cookie status = new Cookie("updtstatus", "1");
    73       status.setMaxAge(3600);//设置cookie存活时间1个小时
    74       response.addCookie(status);
    75         
    76         ouputStream.flush();     
    77         ouputStream.close();  
    78     }
    复制代码
  • 相关阅读:
    在IIS上启用Gzip压缩(HTTP压缩)
    跨数据库服务器查询和跨表更新
    GOOGLE高级搜索的秘籍
    NET中的规范标准注释(二) -- 创建帮助文档入门篇
    NET中的规范标准注释(一) -- XML注释标签讲解
    如何取出word文档里的图片
    System帐户!我使用你登陆
    横竖两个数字塔的效果BAT批处理怎么写?
    用批处理修改日期,然后在改回来
    根据日期计算星期几----蔡勒(Zeller)公式推导
  • 原文地址:https://www.cnblogs.com/Jansens520/p/6513504.html
Copyright © 2020-2023  润新知