后台管理系统做Excel表格导出

本文介绍了如何在后台管理系统中根据前端输入的搜索条件,实现数据的筛选和导出为Excel表格。主要涉及从前端获取搜索条件,传递到后端,后端接收到数据后执行导出操作,并利用特定方法封装生成Excel表格。

在后台管理系统中按搜索条件框中输入的要求导出对应的数据,生成Excel表格

1.从前端获取输入的条件,传到后端

//前端导出按钮绑定的方法
exportExcel:function () {
            //获取搜索框中的数据
            var 定义名称= $("#html页面搜索框绑定的id名").val();

            //访问后端方法(因为是struts框架访问方法有区别),直接通过Get请求方式传递参数
            window.open("../business/BusinessBaseInfo_exportData.do?"
                +"&后端取值的键名="+定义名称

            );
例如:
     前端html页面搜索框有个字段

      <div class="col-sm-2" style="padding: 0;">
        <div id="id" style="display: none"></div>
          <input id="businessNameSimple" class="form-control"  placeholder="商家简称"/>
       </div>

        //在JS中获取数据
        var businessNameSimple= $("#businessNameSimple").val();

            
例如:
        window.open("../business/BusinessBaseInfo_exportData.do?"
                    +"&businessNameSimple="+businessNameSimple

        }

2.后端接收数据,执行导出操作

  public void exportData() throws ParseException, IOException {
        //接收后端参数(因为是struts框架接收参数的方法有区别)
        String businessNameSimple = request.getParameter("businessNameSimple");
        
        //创建实体类对象
        BusinessBaseInfo businessBaseInfo=new BusinessBaseInfo();
      
        //判断接收的参数是否为空
        if (!StringUtil.isEmpty(businessNameSimple){
            //不为空将参数set到对象中去
            businessBaseInfo.setBusinessNameSimple(businessNameSimple);
            }

       //调取Servcie接口根据参数查询数据(也分页查询sql一样,需要导出全部数据就去掉分页条件)
        PageUtils pageUtils = businessBaseInfoService.pageExportList(businessBaseInfo);

       
        //分页查询出来的对象pageUtils 还包含总记录数、每页记录数、总页数 、当前页数、列表数据
        //将查询出来的表格数据封装
        List<BusinessBaseInfo> list =(List<BusinessBaseInfo>)pageUtils.getList();
     

       //设置导出类型
        response.setContentType("application/x-execl");

      //Content-Disposition就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名
      //设置响应头   attachment表示为附件  并指定文件名称
        
        response.setHeader("Content-Disposition", "attachment;filename=" +
                    new String(("商家数据"+ DateFormatUtil.formatToStringTime(new                 
                   Date())+".xls").getBytes(), "ISO-8859-1"));

        ServletOutputStream outputStream = response.getOutputStream();
        
        //导出数据数据生成Excel表格
        ExcelUtil.exportBusinessBaseInfo(list,outputStream);
    }

3.封装的导出生成Excel表格方法

 public static void exportBusinessBaseInfo(List<BusinessBaseInfo> list,ServletOutputStream outputStream) throws IOException {
        if (list==null){
            return;
        }
        //创建Excel文件
        HSSFWorkbook book=new HSSFWorkbook();
        //创建excel文件中的一个页面
        HSSFSheet sheet = book.createSheet("商家信息");
        //设置默认宽度
        sheet.setDefaultColumnWidth(12);
        //合并单元格
        CellRangeAddress rangeAddress = new CellRangeAddress(0, 0, 0, 12);
        //页添加单元格
        sheet.addMergedRegion(rangeAddress);
        //创建第1行
        HSSFRow createRow = sheet.createRow(0);
        //创建名称行样式
        HSSFCellStyle style = creatCellStyle(book, (short) 16);
        //创建标题行样式
        HSSFCellStyle style1 = creatCellStyle(book, (short) 11);
        //创建第0个单元格
        HSSFCell Cell = createRow.createCell(0);
        //设置单元格的样式
        Cell.setCellStyle(style);
        //创建单元格的内容
        if (list != null) {
            //for (int i = 0; i < userBaseInfo.size(); i++) {
            Cell.setCellValue("导出商家数据:");
            //}
        }
        //创建第一行单元格
        HSSFRow Row1 = sheet.createRow(1);
        //定义标题行单元格的值
        //例如:
        String[] tille = {"店铺ID", "创建时间", "关联用户Id", "昵称", "申请的组织",
                "群", "副牌", "用户备注", "会员", "商家简称",
                "类型名称", "logo", "联系电话", "浏览次数", "评价平均分",
                "商家状态", "营业执照", "是否对外显示", "是否为平台商家"
        };// 表单字段
        //循环遍历设置题行单元格的值
        for (int i = 0; i < tille.length; i++) {
            HSSFCell createCell = Row1.createCell(i);
            createCell.setCellStyle(style1);
            createCell.setCellValue(tille[i]);
        }

        //遍历集合将数据填进表格
        for (int i = 0; i < list.size(); i++) {
            BusinessBaseInfo businessBaseInfo=list.get(i);

            HSSFRow Row = sheet.createRow(i + 2); // 标题行和列名 占了两行
            Row.createCell(0).setCellValue(businessBaseInfo.getId());

            //sql查出的时间需要处理DateFormatUtil.formatToStringTime()
            Row.createCell(1).setCellValue(
                DateFormatUtil.formatToStringTime(businessBaseInfo.getCreateTime()));
            Row.createCell(2).setCellValue(businessBaseInfo.getUserId());
            Row.createCell(3).setCellValue(businessBaseInfo.getNickName());
          
        }
        try {
            book.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            outputStream.close();
        }

    }

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值