在做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);  
  
    }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM