zoukankan      html  css  js  c++  java
  • JavaWeb使用POI导出Execel

    本文参考https://www.cnblogs.com/gudongcheng/p/8268909.html

    使用POI导出Execel表格,首先得导入jar包

    <!-- poi  -->
                <dependency>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi</artifactId>
                    <version>3.10.1</version>
                </dependency>

     工具类代码:

    package com.zhiyou.zjc.util;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    public class ExportExcel {
    
         public static void buildExcelDocument(List<Map<String,Object>> list,HttpServletResponse response) throws Exception {
                
                HSSFWorkbook workbook=new HSSFWorkbook();  //工作簿
                // 从model对象中获取userList
                // 创建Excel的sheet
                HSSFSheet sheet = workbook.createSheet("会员列表");
                Map<String,Object> map=list.get(0);
                int num=0;
                HSSFRow first= sheet.createRow(0);
                for(String key: map.keySet()) {
                     first.createCell(num).setCellValue(key);
                     num++;
                }
                // 填充数据
                int rowNum = 1;
                for(Map<String,Object> data:list) {  //得到第n条记录
                    HSSFRow row= sheet.createRow(rowNum); //创建一行
                    int n=0; //表示该行的列
                    for(String key: data.keySet()) {
                         row.createCell(n).setCellValue(data.get(key).toString());
                         n++;
                    }
                    rowNum++;
                }
                setResponseHeader(response, "会员列表.xls");
                OutputStream os = response.getOutputStream();
                workbook.write(os);
                os.flush();
                os.close();
            }
         //发送响应流方法
            public static void setResponseHeader(HttpServletResponse response, String fileName) {
                try {
                    try {
                        fileName = new String(fileName.getBytes(),"ISO8859-1");
                    } catch (UnsupportedEncodingException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    response.setContentType("application/octet-stream;charset=ISO8859-1");
                    response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
                    response.addHeader("Pargam", "no-cache");
                    response.addHeader("Cache-Control", "no-cache");
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
    
    }

    控制层代码:

    @RequestMapping("exportExcel")
        public String exportExcel(@RequestParam(value = "page" ,defaultValue = "1")Integer page,
                @RequestParam(value = "rows",defaultValue = "5")Integer rows,HttpServletResponse response) {
            List<Map<String, Object>> list=userService.selectMap(page,rows);
            try {
                ExportExcel.buildExcelDocument(list,response);
                return null;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

    Service层代码:

    public List<Map<String, Object>> selectMap(Integer page, Integer rows) {
            // TODO Auto-generated method stub
            PageHelper.startPage(page, rows);
            List<Map<String,Object>> selectAll = userMapper.selectAll();
            return selectAll;
        } 

    SQL语句:(注意返回类型)

     <select id="selectAll" resultType="java.util.LinkedHashMap">
          select * from tb_user
      </select>

    前端代码(这里只能使用表单提交,不能使用ajax,否则就不会出现下载本地选择效果

     使用的是EasyUI框架

      text:'导出',
        iconCls:'icon-remove',
        handler:function(){
            var optins = $("#userList").datagrid("getPager").data("pagination").options;
            var page = optins.pageNumber;
            var rows = optins.pageSize;
            var form=$("<form>").attr({
                "action":"/user/exportExcel",
                "method":"POST"
            }).append("<input type='hidden' name='page' value='"+page+"'/>")
            .append("<input type='hidden' name='rows' value='"+rows+"'/>");
            $(document.body).append(form);
            form.submit();
        }
  • 相关阅读:
    抽象工厂设计模式【看了挺多的,还是这个最清楚】
    js1:对象的学习,构造函数,继承构造函数【使用教材:JavaScript深度剖析第2版】
    如何用DW设计界面 结合 VS设计后台代码
    初识微服务架构
    Mysql分库分表方案
    真实经历,互联网大厂升职加薪那些事
    fastjson数据格式转换 SerializerFeature属性详解
    基于Spring Boot和Spring Cloud实现微服务架构学习
    MySQL中tinytext、text、mediumtext和longtext详解
    下载知乎视频
  • 原文地址:https://www.cnblogs.com/zjc364259451/p/11650892.html
Copyright © 2011-2022 走看看