Java 为什么HSSFWorkbook.write在HttpServletResponse中不起作用
我使用下面的代码在输出流中编写excel文件。但当我在excel中打开下载的文件时,它在打开时出现问题Java 为什么HSSFWorkbook.write在HttpServletResponse中不起作用,java,excel,jsf,Java,Excel,Jsf,我使用下面的代码在输出流中编写excel文件。但当我在excel中打开下载的文件时,它在打开时出现问题 HSSFWorkbook workbook = getWorkBook(); FacesContext context = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) FacesContext .getCurrent
HSSFWorkbook workbook = getWorkBook();
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) FacesContext
.getCurrentInstance().getExternalContext().getResponse();
response.setHeader("Content-Disposition", "attachment;filename=someName.xls");
response.setContentLength(workbook.getBytes().length);
response.setContentType("application/vnd.ms-excel");
try {
workbook.write(response.getOutputStream());
response.getOutputStream().close();
} catch (Exception ex) {
ex.printStackTrace();
}
当然,我把结果写在一个文件中,结果是正确的。我通过删除下面的代码来解决这个问题
response.setContentLength(workbook.getBytes().length);
我通过删除下面的代码来解决这个问题
response.setContentLength(workbook.getBytes().length);
当你能做到的时候,不要忘记去做。当你能做到的时候,不要忘记去做。