• 在做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语句
    SqlServer新建视图
    DataGridView DataGridViewCheckBoxColumn编辑时实时触发事件
    oracle number 和sqlserver numeric的区别
    放下你的无效社交
    一个程序员眼中的北京和上海
    10+年程序员总结的20+条经验教训
    SQL collate
    SQL自定义函数split分隔字符串
    C# .NET开发Oracle数据库应用程序
  • 原文地址:https://www.cnblogs.com/wkrbky/p/6122656.html
Copyright © 2020-2023  润新知