//创建工作薄
response.reset();
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(sheetName);
excelCross(wb, sheet, sheetName, Integer.parseInt(column.get(column.size() - 1)), data,header);
response.setCharacterEncoding("UTF-8");
// response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setContentType("application/x-msdownload");
try {
//获取浏览器名称
String agent = request.getHeader("user-agent");
String filename = sheetName + ".xls";
//不同浏览器需要对文件名做特殊处理
// 火狐浏览器
if (agent.contains("Firefox")) {
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+", " ");
}
//推送浏览器
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
wb.write(response.getOutputStream());
String path3 = "E:\\xxx\\盒内文件目录.xlsx"; // 测试服地址
InputStream is = new FileInputStream(path3);
byte[] b = new byte[4096];
int size = is.read(b);
while (size > 0) {
response.getOutputStream().write(b, 0, size);
size = is.read(b);
}
} catch (Exception e) {
e.printStackTrace();
}
vm.$pcipTools.ajax({
url: 'public/oa/exportArchiveMain',
data: data,
async: false,
Accept: 'application/json,text/plain, */*',
'Content-Type': 'application/octet-stream;charset=UTF-8',
// responseType: 'blob',
responseType: 'arraybuffer',
method: 'post',
success: function (response) {
const link = document.createElement("a"); //创建a标签
let blob = new Blob([response], { type: "application/vnd.ms-excel;charset=UTF-8" }); // response就是接口返回的文件流
let objectUrl = URL.createObjectURL(blob);
link.href = objectUrl;
link.download = fileName; // 自定义文件名
link.click(); // 下载文件
URL.revokeObjectURL(objectUrl); // 释放内存
}
})
后台
前台
结果: