将 XSSFWorkbook excel 文件写入响应流

问题描述 投票:0回答:2

我有这个网页 单击按钮时,它会读取数据并将文件保存到位置 xyz。

我不想要那样。我想通过 chrome 浏览器下载它。

如何发送下面的回复?

给出错误的行是

response.getOutputStream().write(outputStream);

谢谢

public void exportCOAExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {

    //works well. save excel file to desktop
    XSSFWorkbook workbook = new XSSFWorkbook ();
    FileOutputStream outputStream = new FileOutputStream("C:\\Users\\user\\Desktop\\revenue.xls");
    workbook.write(outputStream);
    outputStream.flush();
    outputStream.close();

   //trying to get browser to download the file
    response.setContentType("text/xls");
    response.setHeader("Content-disposition", "attachment;filename=" + "a.xls");

   /************problematic line************/
   response.getOutputStream().write(outputStream);

    response.getOutputStream().flush();

}
java excel response
2个回答
4
投票

您可以将

workbook
直接写入回复的
outputstream

XSSFWorkbook workbook = new XSSFWorkbook();
response.setContentType("text/xls");
response.setHeader("Content-disposition", "attachment;filename=" + "a.xls");

try (OutputStream outputStream = response.getOutputStream()) {
     workbook.write(outputStream);
}

0
投票

M. le Rutte 的回答只有一点评论。 XSSFWorkbook 工作簿也是可关闭的,并且必须用资源块包围。

© www.soinside.com 2019 - 2024. All rights reserved.