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

  • 相关阅读:
    收集一些dos网络配置命令,从新获取ip刷新dns
    多个线程访问共享对象和数据的方式
    Oracle rownum 分页, 排序
    ORACLE中用rownum分页并排序的SQL语句
    CentOS 6.5安装MongoDB 2.6(多yum数据源)
    【编程练习】收集的一些c++代码片,算法排序,读文件,写日志,快速求积分等等
    java枚举使用详解
    PHP+MySQL动态网站开发从入门到精通(视频教学版)
    Premiere Pro CS6标准教程
    黑客攻防:实战加密与解密
  • 原文地址:https://www.cnblogs.com/shoose/p/7744443.html
Copyright © 2011-2022 走看看