Java的Excl表格的导出功能(代码全)

本文的项目框架为SSM框架
前端页面需要点击触发按钮进入controller。

@RequestMapping("/telExport")
    public void exportFile(HttpServletResponse response,HttpServletRequest request, String searchvalue, String commuId,String parentId, String treename, String type, String starttime,String endtime, String tn) {
//上方带入的是我所需要查找内容的参数,可删除编写你自己需要的参数
//下方代码 可忽略
        Subject currentUser = SecurityUtils.getSubject();
        String userid = currentUser.getSession().getAttribute("_USER_ID").toString();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<CloudRecord> clo = null;
        String value = null;
        if (StringUtils.isNotEmpty(searchvalue)) {
            try {
                value = URLDecoder.decode(searchvalue, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        Date st = null;
        Date et = null;
        if (StringUtils.isNotEmpty(starttime)) {
            try {
                st = df.parse(starttime);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        if (StringUtils.isNotEmpty(endtime)) {
            try {
                et = df.parse(endtime);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        switch (type) {// 查询需要导出的内容
        case "2":
            String cityId = parentId.substring(0, 4) + "00";
            clo = cloudRecordService.selectCityTelList(cityId, userid, type,
                    value, st, et);
            break;
        case "3":
            clo = cloudRecordService.selectCityTelList(parentId, userid, type,
                    value, st, et);
            break;
        case "4":
            clo = cloudRecordService.selectCityTelList(treename, userid, type,
                    value, st, et);
            break;
        case "5":
            clo = cloudRecordService.selectCityTelList(commuId, userid, type,
                    value, st, et);
            break;
        }
    //直至此处上方代码可忽略,上方的代码主要是请求数据库查找需要导出的内容,需更换为你自己的内容
    //下发为导出功能不可缺少的步骤
        OutputStream os = null;
        XSSFWorkbook xWorkbook = null;
        try {
            os = response.getOutputStream();
            response.reset();
            response.setContentType("application/msexcel");

            response.setHeader("Content-disposition", "attachment; filename="
                    + tn + df.format(new Date()) + ".xlsx");
            response.setContentType("application/msexcel;charset=UTF-8");// 设置类型
            response.setHeader("Pragma", "No-cache");// 设置头
            response.setHeader("Cache-Control", "no-cache");// 设置头
            response.setDateHeader("Expires", 0);// 设置日期头

            xWorkbook = new XSSFWorkbook();
            XSSFSheet xSheet = xWorkbook.createSheet("通话");

            // set Sheet页头部
            setSheetHeader(xWorkbook, xSheet);
            // set Sheet页内容
            setSheetContent(xWorkbook, xSheet, clo);

            xWorkbook.write(os);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != os) {
                try {
                    os.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (null != xWorkbook) {
                try {
                    xWorkbook.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private void setSheetHeader(XSSFWorkbook xWorkbook, XSSFSheet xSheet) {
        //有多少列要导出 设置多少个
        xSheet.setColumnWidth(0, 20 * 256);
        xSheet.setColumnWidth(1, 20 * 256);
        xSheet.setColumnWidth(2, 20 * 256);
        xSheet.setColumnWidth(3, 20 * 256);
        xSheet.setColumnWidth(4, 20 * 256);
        xSheet.setColumnWidth(5, 20 * 256);
        xSheet.setColumnWidth(6, 20 * 256);


        CellStyle cs = xWorkbook.createCellStyle();
        // 设置水平垂直居中
        cs.setAlignment(CellStyle.ALIGN_CENTER);
        cs.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        cs.setWrapText(true);// 是否自动换行
        XSSFRow xRow0 = xSheet.createRow(0);
        //下发代码为设置你需要导出内容的名称,内容自行填写
        XSSFCell xCell0 = xRow0.createCell(0);
        xCell0.setCellStyle(cs);
        xCell0.setCellValue("区县");

        XSSFCell xCell1 = xRow0.createCell(1);
        xCell1.setCellStyle(cs);
        xCell1.setCellValue("小区");

        XSSFCell xCell2 = xRow0.createCell(2);
        xCell2.setCellStyle(cs);
        xCell2.setCellValue("栋号");

        XSSFCell xCell3 = xRow0.createCell(3);
        xCell3.setCellStyle(cs);
        xCell3.setCellValue("单元号");

        XSSFCell xCell4 = xRow0.createCell(4);
        xCell4.setCellStyle(cs);
        xCell4.setCellValue("被叫电话号码");

        XSSFCell xCell5 = xRow0.createCell(5);
        xCell5.setCellStyle(cs);
        xCell5.setCellValue("通话时长(-1被叫未接通,0主叫未接通,大于0:通话时长)");

        XSSFCell xCell6 = xRow0.createCell(6);
        xCell6.setCellStyle(cs);
        xCell6.setCellValue("接通时间");
    }

        private void setSheetContent(XSSFWorkbook xWorkbook, XSSFSheet xSheet,
            List<CloudRecord> clo) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        CellStyle cs = xWorkbook.createCellStyle();
        cs.setWrapText(true);

        if (null != clo && clo.size() > 0) {
            for (int i = 0; i < clo.size(); i++) {
                XSSFRow xRow = xSheet.createRow(i + 1);
                CloudRecord cloudRecord = clo.get(i);

                for (int j = 0; j < 8; j++) {
                    XSSFCell xCell = xRow.createCell(j);
                    xCell.setCellStyle(cs);
                    switch (j) {
                    //switch 为取得你要导出的内容,注意case 后面的数字与上方你设置的标题名称对于
                    case 0:
                        xCell.setCellValue(cloudRecord.getAreaName());
                        break;
                    case 1:
                        xCell.setCellValue(cloudRecord.getAddressName());
                        break;
                    case 2:
                        xCell.setCellValue(cloudRecord.getBuildingno());
                        break;
                    case 3:
                        xCell.setCellValue(cloudRecord.getUnit());
                        break;
                    case 4:
                        xCell.setCellValue(cloudRecord.getTelPhone());
                        break;
                    case 5:
                        xCell.setCellValue(cloudRecord.getTelduration());
                        break;
                    case 6:
                        if (cloudRecord.getTime() != null
                                && !cloudRecord.getTime().equals(""))
                            xCell.setCellValue(sdf.format(cloudRecord.getTime()));
                        break;
                    default:
                        break;
                    }
                }
            }

        }

    }

这样一个完成的Excl表格导出功能就结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java°遇上鲸鱼

文章帮您解决了问题打赏1元即可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值