web前端 下载(导出)功能的实现

本文介绍了在web前端如何实现从数据库下载数据并生成Excel文件的步骤。首先,查询所需数据,然后将数据存入集合,接着利用工具方法将集合内容写入Excel文件,完成文件创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

下载数据库的数据 成Excel文件:
思路: 1,先查询出你要保存(下载)的数据
2,把数据通过遍历查询出来放入集合中
3,把遍历出来的数据写入Excel文件中 文件便创建成功。
代码如下:
jsp:

<button id="go_download" type="button" class="btn btn-success"><i class="fa fa-arrow-circle-o-down">下载</i>
                                    </button>

js:
//是form 表单提交 传参优化了一下

$("#go_download").on("click", function() {
        var formData = $("#searchForm").serializeArray();//把form里面的数据序列化成数组
        var getStr = "";
        formData.forEach(function (e) {
            if(e.value != '00'){
                getStr += e.name;
                getStr += "=";
                getStr += e.value;
                getStr += "&";
            }
        });
        var url = "yeepayFenrun/yeepayFenrunDataDownLoad.do?"+getStr;
        window.location=url;
    });

control:

/**
     * 下载
     */
    @RequestMapping(value = "yeepayFenrunDataDownLoad.do")
    public void listDownLoad(HttpServletRequest request,
            HttpServletResponse response) {
        String startdate = request.getParameter("startdate");
        String enddate = request.getParameter("enddate");
        String start = request.getParameter("start");
        String length = request.getParameter("length");

        if(LOG.isInfoEnabled()){
            LOG.info("下载");
            LOG.info("start:" + start);
            LOG.info("length:" + length);
        }

        Map<String, Object> map = new HashMap<String, Object>();
        StringBuffer buffer = new StringBuffer();
        if(StringHandler.isNotBlank(startdate)){
            buffer.append(startdate);
            buffer.append(" 00:00:00");
            map.put("startdate", buffer.toString());
        }
        if(StringHandler.isNotBlank(enddate)){
            buffer.setLength(0);
            buffer.append(enddate);
            buffer.append(" 23:59:59");
            map.put("enddate", buffer.toString());
        }
        if(StringHandler.isNotBlank(start)){
            map.put("start", Integer.valueOf(start));
        }
        if(StringHandler.isNotBlank(length)){
            map.put("length", Integer.valueOf(length));
        }
        try {
            List<YeepayFenrunData> list = yeepayFenrunDataService.getInfoDownLoad(map);
            //文件名
            String fileName = 
DateUtil.getSimpleDateFormat(DateUtil.DATE_FORMAT_2).format(new Date())+".xls";
            String[] title = {"订单号""创建时间"};
            List<String[]> dataList = new ArrayList<String[]>();
            for (YeepayFenrunData yeepayFenrunData : list) {
                String[] cellArr = new String[title.length];
                cellArr[0] = yeepayFenrunData.getSys_trade_no();
                cellArr[1] = DateUtil.getSimpleDateFormat(DateUtil.DATE_FORMAT_1).format(yeepayFenrunData.getUpdate_time());
                dataList.add(cellArr);
            }
            boolean flag = ExcelUtil.writeExcel(response, fileName, title, dataList);
            if(flag){
                LOG.info(fileName+",文件创建成功");
            }else{
                LOG.info(fileName+",文件创建失败");
            }
        } catch (Exception e) {
            if(LOG.isErrorEnabled())
                LOG.error(e.getMessage());
        }
    }

Excel工具类方法:

/**
     * 写Excel文件
     * @param response  : 响应对象
     * @param fileName  : 下载文件名称
     * @param title     : 标题
     * @param dataList  : 内容
     * @return
     * @throws Exception
     */
    public static boolean writeExcel(HttpServletResponse response,String fileName,String[] title,List<String[]> dataList) throws Exception {
        boolean flag = false;
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFCellStyle hssfTitleCellStyle = getHSSFTitleStyle(wb);

            int pageSize = 65535;
            int listSize = dataList.size();
            int sheetSize = 0;
            if(listSize % pageSize == 0){
                sheetSize = listSize/pageSize;
            }else{
                sheetSize = (listSize/pageSize)+1;
            }

            if(sheetSize == 0){
                HSSFSheet sheet = wb.createSheet();
                HSSFRow row = sheet.createRow(0);
                row.setHeight((short) 600);//目的是想把行高设置成25px
                row.setRowStyle(hssfTitleCellStyle);
                sheet.setDefaultColumnWidth(20);  
                sheet.setDefaultRowHeightInPoints(20);  
                //title
                for (int i = 0;i < title.length;i++) {
                    HSSFCell cell = row.createCell(i);
                    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                    cell.setCellStyle(hssfTitleCellStyle);
                    cell.setCellValue(title[i]);
                }
            }else{
                int start = 0;
                int end = 0;
                for(int s=0;s<sheetSize;s++){
                    start = s * pageSize;
                    if(s == (sheetSize-1))
                        end = listSize;
                    else
                        end = (s+1) * pageSize;
                    HSSFSheet sheet = wb.createSheet();
                    HSSFRow row = sheet.createRow(0);
                    row.setHeight((short) 600);//目的是想把行高设置成25px
                    row.setRowStyle(hssfTitleCellStyle);
                    sheet.setDefaultColumnWidth(20);  
                    sheet.setDefaultRowHeightInPoints(20);  
                    //title
                    for (int i = 0;i < title.length;i++) {
                        HSSFCell cell = row.createCell(i);
                        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                        cell.setCellStyle(hssfTitleCellStyle);
                        cell.setCellValue(title[i]);
                    }
                    //context
                    HSSFCellStyle hssfCellStyle = getHSSFCellStyle(wb);
                    int row_index = 1;
                    for(int j = start;j < end;j++){
                        HSSFRow data_row = sheet.createRow(row_index);
                        row_index ++;
                        String[] cellList = dataList.get(j);
                        int len = cellList.length;
                        for (int k=0;k<len;k++) {
                            HSSFCell cell = data_row.createCell(k);
                            String value = cellList[k];
                            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                            cell.setCellStyle(hssfCellStyle);
                            cell.setCellValue(value);
                        }
                    }
                }
            }
            response.reset();
            response.setHeader("Content-Disposition", "attachment;filename="+ new String(fileName.getBytes(), "iso8859-1"));
            ServletOutputStream out = response.getOutputStream();
            wb.write(out);
            // 弹出下载对话框
            out.close();
            flag = true;
        } catch (Exception e) {
            throw e;
        }
        return flag;
    }

过程就是如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值