• 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());
            }
        }

  • 相关阅读:
    查询session内容
    7个月工作总结
    clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
    javascript实现jsp页面的打印预览
    Ext:添加进度条
    js实现非模态窗口增加数据后刷新父窗口数据
    websphere:rs.getDate()无法使用的解决方法
    POI实现excel各种验证和导入的思路总结
    Tomcat迁移到WebsphereURL获取中文参数乱码问题
    JS函数参数
  • 原文地址:https://www.cnblogs.com/shoose/p/7744443.html
Copyright © 2020-2023  润新知