zoukankan      html  css  js  c++  java
  • Java POI导出Excel并使用输出流下载文件弹出打开保存框

    /**
         * 导出Excel
         * @author Saffi
         */
        @RequestMapping("exportExcel.action")
        public void exportExcel(HttpServletResponse response) throws IOException {
            try {
            // 查询并赋给List集合
            List<Entity> oddList = entityService.listExport();

            // 在内存中创建一个Excel文件,通过输出流写到客户端提供下载
            // 内存中保留 10000 条数据,以免内存溢出,其余写入 硬盘
            SXSSFWorkbook workbook = new SXSSFWorkbook(10000);
            // 创建一个sheet页
            SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("这是sheet名");
            // 分别设置Excel列的宽度
            sheet.setColumnWidth(0, 100 * 40);
            sheet.setColumnWidth(1, 100 * 50);
            sheet.setColumnWidth(2, 100 * 50);
      
            // 创建标题
            SXSSFRow headRow = (SXSSFRow) sheet.createRow(0);

            headRow.createCell(0).setCellValue("编号");
            headRow.createCell(1).setCellValue("时间");
            headRow.createCell(2).setCellValue("单号");
         

            // 遍历oddList集合
            for (OddNunber odd : oddList) {
                // 创建行
                SXSSFRow dataRow = (SXSSFRow) sheet.createRow(sheet.getLastRowNum() + 1);

                // 创建下标为0的Cell,并将其值设为查询结果中的编号
                dataRow.createCell(0).setCellValue(odd.getOnid());
                // 创建下标为1的Cell,并将其值设为查询结果中的日期
                dataRow.createCell(1).setCellValue(odd.getOrecorddate());
                // 创建下标为2的Cell,并将其值设为查询结果中的单号
                dataRow.createCell(2).setCellValue(odd.getCustomernumber());
            }
            
                // 设置生成的Excel的文件名,并以中文进行编码
                String codedFileName = new String("Excel名".getBytes("gbk"), "iso-8859-1");
                response.setHeader("Content-Disposition", "attachment;filename=" + codedFileName + ".xlsx");
                // 响应类型,编码
                response.setContentType("application/octet-stream;charset=UTF-8");
                // 形成输出流
                OutputStream osOut = response.getOutputStream();
                // 将指定的字节写入此输出流
                workbook.write(osOut);
                // 刷新此输出流并强制将所有缓冲的输出字节被写出
                osOut.flush();
                // 关闭流
                osOut.close();
                /*
                 * dispose of temporary files backing this workbook on disk 处理在磁盘上备份此工作簿的临时文件
                 * SXSSF分配临时文件,您必须始终清除显式,通过调用dispose方法
                 */
                workbook.dispose();
            } catch (Exception e) {
                e.printStackTrace();
                response.sendRedirect("error.action");
                log.error("系统错误", e.fillInStackTrace());
            }
        }

  • 相关阅读:
    计算机网路知识的简单介绍
    计算机的发展史及多道技术
    计算机基础知识
    Flask学习【第11篇】:整合Flask中的目录结构
    Flask学习【第10篇】:自定义Form组件
    Flask学习【第9篇】:Flask-script组件
    Flask学习【第8篇】:flask-session组件
    Flask学习【第7篇】:Flask中的wtforms使用
    Flask学习【第6篇】:Flask中的信号
    Flask学习【第4篇】:用Flask的扩展实现的简单的页面登录
  • 原文地址:https://www.cnblogs.com/shoose/p/7744443.html
Copyright © 2011-2022 走看看