我正在尝试下载由Apache POI制作的动态创建的Excel电子表格。在JSF中,我使用的是PrimeFaces,但是由于某些原因,我无法使其与他们的FileDownload方法一起使用。我已经尝试了其他一些方法,但是似乎没有任何效果。
这是我目前的整个方法:
public void generateExcel() throws IOException, InvalidFormatException {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpServletResponse response = (HttpServletResponse) ec.getResponse();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + "Spreadsheet.xls" + "\"");
OutputStream output = response.getOutputStream();
Workbook excelTabela = new HSSFWorkbook();
//Building the xls content here.
excelTabela.write(output);
excelTabela.close();
fc.responseComplete();
output.flush();
output.close();
}
它贯穿了这段代码(我检查了打印语句),但是什么都没有发生。
这是我用于运行此方法的按钮:
<h:form>
<p:remoteCommand name="gen" actionListener="#{PrevoziGeneratorBean.generateExcel}" />
<h:commandButton type="button" onclick="gen()" value="Execute" />
</h:form>
我根据this question的答案编写了这段代码,但无法正常工作。