天天看點

java鬼混筆記:用Spring的ResponseEntity和poi進行excel生成和下載下傳

筆記來自于憤怒人需求,,,,,,

把代碼簡化了一下

@RequestMapping("/a")
@ResponseBody
public ResponseEntity<byte[]> a() throws Exception {
	Workbook wb = new HSSFWorkbook();
	Sheet sheet = wb.createSheet("1");// 分頁
	Sheet sheet2 = wb.createSheet("2");// 分頁2
	
	Row row = sheet.createRow(0);// 第0+1行
	Cell cell = row.createCell(0);// 第row行第0+1列
	cell.setCellValue("abc");
	// 把所有的資料放在excel中
	
	HttpHeaders headers = new HttpHeaders();
	headers.setContentDispositionFormData("attachment", "1workbook.xls");// new String("線上消費記錄".getBytes("GBK"),"iso-8859-1")
	headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
	
	ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
	wb.write(outByteStream);
	return new ResponseEntity<byte[]>(outByteStream.toByteArray(), headers, HttpStatus.OK);
}
           

JXLS

@GetMapping("/d")
    public void d(HttpServletResponse response) throws Exception {
        Context context = new Context();
        List<OrderVO> orderVOS = makeOrderVO(3);
        context.putVar("orderList", orderVOS);
        InputStream in = CC.class.getClassLoader().getResourceAsStream("excel/shipExcel.xls");   //模闆路徑
        response.setHeader("content-type", "application/octet-stream");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-Disposition", "attachment;fileName=" + new String(("123.xls").getBytes(),"ISO-8859-1"));

        ServletOutputStream outputStream = response.getOutputStream();
        JxlsHelper.getInstance().processTemplate(in, outputStream, context);
        outputStream.flush();
        outputStream.close();
        in.close();
    }
           

ok