首页 > 数据库技术 > 详细

使用POI将从数据库搜索出来的记录导出成EXCEL文件并弹出下载框

时间:2014-02-26 20:09:35      阅读:541      评论:0      收藏:0      [点我收藏+]

poi是将数据输出成excel的非常好用的插件,只需要一个poi-3.7.jar的包,就可以完成如题的功能~网上很多是直接导出成excel的例子,而很少弹出下载框让客户下载导出的文件并选择保存路径的功能,所以我将两者整合了一下。

 

bubuko.com,布布扣
public static void resultSetToExcel(ResultSet rs, String xlsName,
            String sheetName) throws Exception {  //参数分别代表什么意思不用解释了吧~
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();
        workbook.setSheetName(0, sheetName);
        HSSFRow row = sheet.createRow((short) 0);
        ;
        HSSFCell cell;
        ResultSetMetaData md = rs.getMetaData();
        int nColumn = md.getColumnCount();
        // 写入各个字段的名称
        for (int i = 1; i <= nColumn; i++) {
            cell = row.createCell((short) (i - 1));
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellValue(md.getColumnLabel(i));
        }

        int iRow = 1;
        // 写入各条记录,每条记录对应Excel中的一行
        while (rs.next()) {
            row = sheet.createRow((short) iRow);
            ;
            for (int j = 1; j <= nColumn; j++) {
                cell = row.createCell((short) (j - 1));
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                if (rs.getObject(j) != null)
                    cell.setCellValue(rs.getObject(j).toString());
                else
                    cell.setCellValue("");
            }
            iRow++;
        }
        String realPath = ServletActionContext.getRequest().getRealPath("/xls");
        xlsName=URLDecoder.decode(xlsName,"utf-8");
        FileOutputStream fOut = new FileOutputStream(realPath + "/" + xlsName);
        workbook.write(fOut);
        fOut.flush();
        fOut.close();

        // 先建立一个文件读取流去读取这个临时excel文件
        FileInputStream fs = null;
        try {
            fs = new FileInputStream(realPath + "/" + xlsName);
        } catch (FileNotFoundException e) {
            return;
        }
        // 设置响应头和保存文件名
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("APPLICATION/OCTET-STREAM");
        String excelName = null;
        try {
            excelName = URLEncoder.encode(xlsName, "UTF-8");
        } catch (UnsupportedEncodingException e1) {
        }
        response.setHeader("Content-Disposition", "attachment; filename=\""
                + excelName + "\"");
        // 写出流信息
        int b = 0;
        try {
            PrintWriter out = response.getWriter();
            while ((b = fs.read()) != -1) {
                out.write(b);
            }
            fs.close();
            out.close();
        } catch (Exception e) {
        }
        File file = new File(realPath + "/" + xlsName);
        if (file.isFile() & file.exists())
            file.delete();
    }
bubuko.com,布布扣

思路简单来说,就是先将生成的excel文件导出到服务器-下载文件-删除服务器上的文件,感觉是不是好理解得多~

使用POI将从数据库搜索出来的记录导出成EXCEL文件并弹出下载框

原文:http://www.cnblogs.com/blairsProgrammer/p/3568268.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!