为什么hssfworkbook.write不能在httpservletresponse中工作

yfjy0ee7  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(271)

我用下面的代码在输出流中编写了一个excel文件。但是当我在excel中打开下载的文件时,它在打开时出现了问题。

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();
    }

当然,我把结果写在一个文件里,结果是正确的。

wj8zmpe1

wj8zmpe11#

我通过删除下面的代码来解决这个问题。

response.setContentLength(workbook.getBytes().length);

相关问题