java workbook 保存_java使用HSSFWorkbook下载Excel表格

@RequestMapping(value = "/exportVectorExcelN", method = RequestMethod.GET)

@ResponseBody

@ApiOperation(value = "导出载体列表", httpMethod = "GET", notes = "导出载体列表,需要授权")

public ReponseResult exportExcel(

@ApiParam(value = "原文编号,参数形式7564cb720a0000151bcbee13209899a0,75522b6b0a000015160873e6fa5dec29", required = true) @RequestParam String[] ids,

@ApiParam(value = "token", required = true) @RequestParam String auth,

HttpServletRequest request,

HttpServletResponse response) throws IOException {

if (ids == null || ids.length == 0) {

return ReponseResult.error(CodeMsg.PARAMETER_ISNULL);

}

List idsn = java.util.Arrays.asList(ids);

List list = null;

try {

list = vectorService.exportDataList(idsn);

} catch (Exception e) {

e.printStackTrace();

}

if(list==null||list.size()==0){

return ReponseResult.error(new CodeMsg(-1, "列表为空!"));

}

// 导出表格

HSSFWorkbook wb = vectorService.exportBatch(list);

OutputStream os = null;

try {

// 创建一个普通输出流

os = response.getOutputStream();

String fileName = "file.xls";

// 请求浏览器打开下载窗口

response.reset();

response.setCharacterEncoding("UTF-8");

// Content-disposition 告诉浏览器以下载的形式打开

String header = request.getHeader("User-Agent").toUpperCase();

if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {

fileName = URLEncoder.encode(fileName, "utf-8");

fileName = fileName.replace("+", "%20"); // IE下载文件名空格变+号问题

} else {

fileName = new String(fileName.getBytes(), "ISO8859-1");

}

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);// 要保存的文件名

response.setContentType("application/vnd.ms-excel");

// 直接用数组缓冲输出流输出

wb.write(os);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return ReponseResult.success(true);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值