zoukankan      html  css  js  c++  java
  • 在做excel导出时如何将excel直接写在输出流中

    之前做excel导出时,我都是先将文件写在服务器上,然后再下载下来,后来发现原来可以直接将文件写在输出流里边。

    下面是一个小demo:

    package com.huaqin.fcstrp.util;  
      
    import java.io.IOException;  
    import java.io.OutputStream;  
    import java.io.UnsupportedEncodingException;  
    import java.net.URLEncoder;  
      
    import javax.servlet.http.HttpServletResponse;  
      
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
    import org.apache.poi.ss.usermodel.Cell;  
    import org.apache.poi.ss.usermodel.Row;  
    import org.apache.poi.ss.usermodel.Sheet;  
      
    public class WriteExcle {  
          
        private HSSFWorkbook workbook = null;  
        /** 
         *  
         * @param response 下载请求的response 
         */  
        public void createExcel(HttpServletResponse response){  
              
            //创建workbook  
            workbook = new HSSFWorkbook();  
            //添加Worksheet(不添加sheet时生成的xls文件打开时会报错)  
            Sheet sheet1 = workbook.createSheet("sheet1");    
            OutputStream out = null;  
            try {      
                out = response.getOutputStream();  
                String fileName = "test.xls";// 文件名  
                response.setContentType("application/x-msdownload");  
                response.setHeader("Content-Disposition", "attachment; filename="  
                                                        + URLEncoder.encode(fileName, "UTF-8"));  
                Row row = workbook.getSheet("sheet1").createRow(0);    //创建第一行    
                for(int i = 0;i < 10;i++){  
                    Cell cell = row.createCell(i);  
                    cell.setCellValue("测试数据"+i);  
                }     
                workbook.write(out);  
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally {    
                try {     
                    out.close();    
                } catch (IOException e) {    
                    e.printStackTrace();  
                }    
            }    
        }  
    }  

    调用:

    /** 
         * 下载2 
         * @param request 
         * @param response 
         * @return 
         * @throws FileNotFoundException  
         */  
        @RequestMapping(value = "/download2")  
        @ResponseBody  
        public void download2(HttpServletRequest request,  
                HttpServletResponse response) throws FileNotFoundException {  
             WriteExcel writeExcle = new WriteExcel();  
             writeExcel.createExcel(response);  
      
        }  
  • 相关阅读:
    SQL Server 存储过程
    FindControl的详细介绍
    Transaction-SQL 游标
    硬盘安装工具nt6 hdd installer无法卸载的问题
    Some question about Source Tree
    java 简单加密
    java 多态与多重继承
    构造方法和方法的重载
    64位WIN7上安装11G R2 ,PLSQL的配置方法
    语录(排名不分先后)
  • 原文地址:https://www.cnblogs.com/wkrbky/p/6122656.html
Copyright © 2011-2022 走看看