try { response.setContentType("application/vnd.ms-excel"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); String fileName = URLEncoder.encode("白名单错误数据导出.xlsx", "UTF-8"); response.setHeader("Content-disposition", "attachment; filename=" + fileName); // Workbook workBook = new HSSFWorkbook(); // Sheet sheet = workBook.createSheet(); // ... 在 sheet 中填充数据 OutputStream os = response.getOutputStream(); try { workBook.write(stream); stream.flush(); os.write(stream.toByteArray()); os.flush(); // 刷新缓冲区 return true; } catch (IOException e) { log.error("生成Excel文件异常:{}", e); return false; } finally { os.close(); // 关闭输出流 } } catch (Exception e) { log.error("生成Excel文件异常:{}", e); return false; } }catch (Exception e) { log.error("生成Excel文件异常:{}", e); return false; }解析
时间: 2024-02-10 16:33:18 浏览: 235
这段代码是用于生成并下载 Excel 文件的代码。首先设置响应的内容类型为 Excel 文件,然后创建一个 ByteArrayOutputStream 对象来存储 Excel 文件的内容。接下来设置响应的头部信息,指定文件名,并将 Excel 文件的内容写入到 ByteArrayOutputStream 中。最后将 ByteArrayOutputStream 中的内容写入到响应的输出流中,完成文件下载。其中,如果在生成 Excel 文件的过程中发生异常,则会记录错误日志并返回 false。如果最终成功下载文件,则返回 true。
相关问题
response.setContentType("application/vnd.ms-excel;charset=UTF-8")和response.setContentType("application/octet-stream;charset=UTF-8");的区别);
`response.setContentType("application/vnd.ms-excel;charset=UTF-8")` 设置响应的内容类型为 MS Excel 格式,可用于导出 Excel 文件。具体来说,它会告诉浏览器响应的内容是 Excel 类型,浏览器会根据内容类型选择相应的处理程序来处理这个响应。
`response.setContentType("application/octet-stream;charset=UTF-8")` 设置响应的内容类型为二进制流,通常用于下载文件。具体来说,它会告诉浏览器响应的内容是二进制流类型,浏览器会将响应保存为文件而不是在浏览器中显示。
综上所述,两者的主要区别在于设置的响应类型不同,前者适用于导出 Excel 文件,后者适用于下载二进制文件。
response.setContentType("application/vnd.ms-excel;charset=utf-8"); String fileName = URLEncoder.encode(startTime+"至"+endTime+"质量事故数据表", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), User.class) .autoCloseStream(Boolean.FALSE) .sheet("质量事故数据表") .doWrite(listAll);
这段代码用于在Java Web应用中生成并下载Excel文件。
首先,通过`response.setContentType("application/vnd.ms-excel;charset=utf-8")`设置响应的Content-Type为Excel文件类型。
接下来,创建一个文件名`fileName`,该文件名由`startTime`、`endTime`和固定的文本组成。使用`URLEncoder.encode()`对文件名进行编码,并使用`.replaceAll("\\+", "%20")`将编码后的空格替换为"%20"。
然后,通过`response.setHeader()`设置响应头部的Content-Disposition,指定文件的下载方式和文件名。其中,`filename*=utf-8''`用于指定编码格式为UTF-8,`+`符号被替换为"%20"。
接着,使用EasyExcel库来生成Excel文件。`.write(response.getOutputStream(), User.class)`指定将Excel文件写入到响应的输出流中,并且指定数据的类型为`User.class`。`.autoCloseStream(Boolean.FALSE)`表示不自动关闭输出流。
然后,使用`.sheet("质量事故数据表")`指定生成的Excel文件中的Sheet名称为"质量事故数据表"。
最后,使用`.doWrite(listAll)`将数据集合`listAll`写入到Excel文件中,并将该Excel文件通过响应流发送给客户端进行下载。
阅读全文
相关推荐















