我正在使用Apache POI创建Excel文件,并且我将其保存到FileOutputStream
。
在XHTML中,我想用<p:fileDownload>
下载此文件,但需要StreamedContent
才能正常工作。
我想知道如何将FileOutputStream
解析或投射到StreamedContent
以使用PrimeFaces下载它。
答案 0 :(得分:1)
以下是不将文件保存到磁盘的解决方案:
HSSFWorkbook workbook = new HSSFWorkbook();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
StreamedContent streamedContent = new DefaultStreamedContent(inputStream, "application/xls", "output.xls");
答案 1 :(得分:-2)
我必须将文件保存到磁盘中,稍后再使用文件类型将其保存到StreamedContent中。
代码:
HSSFWorkbook libro = new HSSFWorkbook();
FileOutputStream elFichero = new FileOutputStream("c:/Temp/MyExcel.xls");
libro.write(elFichero);
elFichero.close();
libro.close();
File fil = new File("c:/Temp/MyExcel.xls");
StreamedContent excel = new DefaultStreamedContent(new FileInputStream(fil), new MimetypesFileTypeMap().getContentType(fil), "MyExcel.xls"));
稍后我可以通过<p:commandButton>
获取我的Excel文件。
无论如何我在寻找一种方法,在下载之前尽量不将它保存到磁盘......