痛点:需求要实现点击下载后直接 下载文档,
解决:使用window.open(url) 项目部署服务器后下载完毕页面无法关闭 或者 window.location.href=url 时跳转空白页
实现方法主要是前端编码
<script代码>
<div class="form-group col-md-2">
<div>
<button class="btn btn-default btn-primary" onclick="exportExcel(1)">导出</button>
</div>
</div>
<form id="formDownload" method="post" action="/excel/exportExcel">
<input type="text" hidden="hidden" name="type" id="type">
<input type="text" hidden="hidden" name="id" id="id">
</form>
====================================================================
<js方法>
function exportExcel(id) {
var time=$("#time").val();
$("#type").val(time);
$("#id").val(id);
$('#formDownload').submit();
}
@RequestMapping(value = {"/exportExcel"})
public void exportExcel(HttpServletRequest request, HttpServletResponse response,Integer type,Integer id) {
List<ExcelDto> excelList = excelService.findData(type, id);
List<DetailDto> detailList = excelService.findDataDetail(type, id);
try {
String resource = ExcelController.class.getResource("templates/excel/Template.xlsx").getPath();
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(resource));
String orderName = "汽车排行";
ExportExcelUtil.exportExcel(wb, excelList , detailList ,orderName,type);//自己的处理方法
// 输出Excel文件
OutputStream output = response.getOutputStream();
response.reset();
// 设置文件头
String outName = "汽车排行.xlsx";
response.setHeader("Content-Disposition","attchement;filename=" + new String(outName.getBytes("gb2312"), "ISO8859-1"));
response.setContentType("content-type:octet-stream");
wb.write(output);
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}