后台数据excel导出流程!

1.首先是页面上的布局:

<a style="margin-left: 1400px;" class="btn btn-primary" id="excell" href="${pageContext.request.contextPath }/dzsw/findExcell.action">导出表格</a>

这里只需要a标签超链接请求导出接口!

2.在service层编写接口:

首先添加依赖POI

    <dependency>
              <groupId>org.apache.poi</groupId>
              <artifactId>poi</artifactId>
              <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-examples</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.9</version>
        </dependency> 

 List<Dzsw> findExcell(String lianxirenname,String sex,String name,String zubie,String duty);

这个方法根据页面搜索条件,添加了四个可搜索的参数条件(这四个参数搜索按照实际需要添加)
 HSSFWorkbook export(List<Dzsw> list, String lianxirenname, String sex, String name, String zubie, String duty);

这个方法是把findExcell上面的这个方法的搜索结果作为第一个参数传入,剩下的参数和findExcell的参数一样,结果是把搜索列表放入excel表中

3.serviceimpl 实现层的方法

在mapper文件的方法是:

List<Dzsw> findExcell(@Param("lianxirenname")String lianxirenname,@Param("sex")String sex,@Param("name")String name,@Param("zubie")String zubie,@Param("duty")String duty);
在service实现层中注入上面方法,在serviceimpl 中这样写入方法-》

@Autowired
 DzswMapper dm;

    @Override//还是service中的方法,查找根据条件得到搜索列表
    public List<Dzsw> findExcell(String lianxirenname, String sex, String name, String zubie, String duty) {
        // TODO Auto-generated method stub
        return dm.findExcell(lianxirenname, sex, name, zubie, duty);
    }

    @Override//这里是把上面搜索结果传入参数中
    public HSSFWorkbook export(List<Dzsw> list, String lianxirenname, String sex, String name, String zubie, String duty) {

        String[] excelHeader = { "报名id","联系人姓名","联系人电话","联系人微信", "代表队", "通讯地址","序号","职务","参赛报名人员姓名","性别","组别","单打","双打","双打配对人员","上传资料"};//excell中表头标题第一行
        HSSFWorkbook wb = new HSSFWorkbook(); 
        //创建HSSFSheet对象
        HSSFSheet sheet = wb.createSheet("参赛人员报名信息表1");  //sheet的表格的名字
        HSSFRow row = sheet.createRow((int) 0);  
      
        HSSFCellStyle style = wb.createCellStyle();   //excell表格样式
        style.getFillBackgroundColorColor();
        style.getFillForegroundColor();
        //根据标题项目名字,建立cellrow与cellcolumn
        for (int i = 0; i < excelHeader.length; i++) {    //根据表头excelHeader 的第一行的表格数,添加表格列
            HSSFCell cell = row.createCell(i);    
            cell.setCellValue(excelHeader[i]);    
            cell.setCellStyle(style);    
            sheet.autoSizeColumn(i); 
             //设置指定列的列宽,256 * 50这种写法是因为width参数单位是单个字符的256分之一
             sheet.setColumnWidth(cell.getColumnIndex(), 100 * 50);
        }    
         list = dm.findExcell(lianxirenname, sex, name, zubie, duty);//查找符合页面上搜索框中条件的集合对象
         //根据查找的集合对象的长度把对象的字段赋值到row行的cell表格中
        for (int i = 0; i < list.size(); i++) {    
            row = sheet.createRow(i + 1);    
            Dzsw applyCard = list.get(i);
            
            row.createCell(0).setCellValue(applyCard.getId());  
            row.createCell(1).setCellValue(applyCard.getLianxirenname()); 
            row.createCell(2).setCellValue(applyCard.getLianxirenphone()); 
            row.createCell(3).setCellValue(applyCard.getLianxirenweixin());
            row.createCell(4).setCellValue(applyCard.getDaibiaodui()); 
            row.createCell(5).setCellValue(applyCard.getAddress()); 
            row.createCell(6).setCellValue(applyCard.getXuhao());
            row.createCell(7).setCellValue(applyCard.getDuty()); 
            row.createCell(8).setCellValue(applyCard.getName()); 
            row.createCell(9).setCellValue(applyCard.getSex()); 
            row.createCell(10).setCellValue(applyCard.getZubie()); 
            row.createCell(11).setCellValue(applyCard.getName()); 
            row.createCell(12).setCellValue(applyCard.getSex()); 
            row.createCell(13).setCellValue(applyCard.getDanda()); 
            row.createCell(14).setCellValue(applyCard.getShuangda()); 
            row.createCell(15).setCellValue(applyCard.getSdpeidui()); 
            row.createCell(16).setCellValue(applyCard.getZiliao()); 
        }    
        return wb;    
    }

4.在请求的接口的controller中 方法实现:

       /**
         * 导出excel方法
         * @param request
         * @param response
         * @param contentType2
         * @throws IOException
         */
        @ResponseBody
        @RequestMapping(value = "/dzsw/findExcell", produces = "application/octet-stream")
        public void findExcell(HttpServletRequest request, HttpServletResponse response,HttpSession session)throws IOException {
            response.setHeader( "Access-Control-Allow-Origin", "*");
            List<Dzsw> list = new ArrayList<Dzsw>();
            String lianxirenname=(String) session.getAttribute("exname");//获取从页面上传入的搜索条件
            String sex=(String) session.getAttribute("sex");//获取从页面上传入的搜索条件
            String name =(String) session.getAttribute("workunit");//获取从页面上传入的搜索条件
            String zubie =(String) session.getAttribute("teams");//获取从页面上传入的搜索条件
            String duty=(String) session.getAttribute("duty");//获取从页面上传入的搜索条件

            System.out.println(name+sex+lianxirenname+zubie+duty+"============session存在的值");
            list = ds.findExcell(lianxirenname, sex, name, zubie, duty);//查找根据传入条件查找搜索结果列表
            for (Dzsw dzsw : list) {
                System.out.println(dzsw+"后台查询的结果集excel!!!!!");
            }
            HSSFWorkbook wb = ds.export(list, lianxirenname, sex, name, zubie, duty);//调用搜索结果放入导出excel
            OutputStream output = response.getOutputStream();//用文件流读取文件并返回页面
            response.addHeader("Content-Disposition", "inline;filename="+ new SimpleDateFormat("yyyyMMdd_HHmmssSSS").format(new Date()) + ".xls");
            response.setContentType("application/msexcel");
            wb.write(output);
            output.close();
            session.removeAttribute("exname");//把session域中的搜索条件删除,防止下次搜索条件传入冲突
            session.removeAttribute("sex");//把session域中的搜索条件删除,防止下次搜索条件传入冲突
            session.removeAttribute("workunit");//把session域中的搜索条件删除,防止下次搜索条件传入冲突
            session.removeAttribute("teams");//把session域中的搜索条件删除,防止下次搜索条件传入冲突
            session.removeAttribute("duty");//把session域中的搜索条件删除,防止下次搜索条件传入冲突
        }
       5.当你这样写的时候肯定可以用了,excel表全部数据可以导出,同时可以根据搜索条件导出搜索结果也可以用了

       6.我也建议用bootstrap中自己带的bootstrap-table-export.js也可以配置导出excel表格数据!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值