之前做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; publicclass WriteExcle {private HSSFWorkbook workbook =null;/** * *@param response 下载请求的response*/publicvoid 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