填充java中的值后,Excel下载无法正常工作
在我的应用程序中使用spring和angularjs和java,在单击button时,有一个ajax调用,从db中获取数据,数据需要写入excel文件,并且需要在浏览器中下载相同的文件。 我附加了相同的代码片段。
现在的问题是,即使正在提取数据,我可以使用poi将其绑定为工作表,但excel文件绝不会以浏览器的forms下载。
请帮助我find正确的解决scheme。 谢谢。
fileName.append(Calendar.get(Calendar.SECOND)); fileName.append(oCalendar.get(Calendar.MILLISECOND)); Sheet sheet = workbook.createSheet("Transaction" + fileName.toString()); CellStyle style = workbook.createCellStyle(); style.setFont(font); Row header = sheet.createRow(0); header.createCell(0).setCellValue("Name"); header.createCell(1).setCellValue("ACC"); header.createCell(2).setCellValue("Date"); header.createCell(0).setCellValue("TRANSACTION_RECONCILIATION_IDENTIFIER"); header.createCell(1).setCellValue("ORIGINAL_RECONCILIATION_IDENTIFIER"); header.createCell(2).setCellValue("STR_TRANSACTION_Date"); response.setHeader("Content-Disposition", "attachment; filename=\"TransactionDetails.xls\""); OutputStream outputStream = response.getOutputStream(); workbook.write(outputStream);
在写输出stream之后,你应该使用response.flushBuffer();
看起来像缺lesscontentType定义。 在调用write()方法之前,请尝试设置contentType,如下所示:
response.setContentType("application/octet-stream");
这应该告诉浏览器从服务器下载。 在这里提出了一个相关的问题: response.setContentType(“APPLICATION / OCTET-STREAM”)
在我的代码中,我写这样的:
response.setContentType("application/octet-stream"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Content-Disposition", "attachment; filename=TransactionDetails.xls"); workbook.write(response.getOutputStream());
希望这可以帮助