JS Excel导出、ajax导出Excel
程序员文章站
2024-03-20 18:24:58
...
在这之前尝试了好几种的方法都不行,主要是因为参数拼不上URL所以导致不成功
var xhr = new XMLHttpRequest();
xhr.open('get', 'http://localhost:8080/user/export', true);
xhr.responseType = 'blob';
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
xhr.onload = function () {
if (this.status == 200) {
var blob = this.response;
var a = document.createElement('a');
var url = window.URL.createObjectURL(blob);
a.href = url;
//设置文件名称
a.download = '用户信息.xls';
a.click();
}
}
xhr.send(JSON.stringify({
"type" : 1,
"startDate" : "2018-01-01",
"endDate" : "2018-12-31"
}));
}
其他几个方案就不说了,同样因为其中一个参数传的是对象导致URL拼接不成功
下面这个是我成功的案例
<button filter="main-sjcl" onclick="downloadFile()" class="btn btn-rounded btn-mint" style="float:left;">
<i class="pli-down-4"></i>
<span>导出</span>
</button>
function downloadFile() {//值班表导出
if ($("#downloadFile").val().length < 1) {
return layer.msg('请选择导出日期范围!');
};
if (onDutyVm.exportNameData == undefined) {
return layer.msg('请选择导出部门!');
};
let currentUser = JSON.parse(sessionStorage.getItem('user'));
let timeRange = $("#downloadFile").val().split(" - ");
let url = ondutybase + '接口';
let $eleForm = $("<form method='get'></form>");
$eleForm.attr("action", url);
$eleForm.append("<input name='acounts' type='hidden' value='" + JSON.stringify(onDutyVm.exportNameData) + "'>");
$eleForm.append("<input name='dutyStartDate' type='hidden' value='" + timeRange[0] + "'>");
$eleForm.append("<input name='dutyEndDate' type='hidden' value='" + timeRange[1] + "'>");
$(document.body).append($eleForm);
//提交表单,实现下载
$eleForm.submit();
$eleForm.remove();
};
导出Excel文档弄好几天终于搞定了,如果只是传单个参数那就非常的好弄,但是其中的
JSON.stringify(onDutyVm.exportNameData)
是一个这样的东西
"["gylzwatch","wangchao","liangchangquan","songbin","chenyong","lijianrong","shenxuepeng","chenwenzhao","zengzhipeng","xiaojiake","tangyu"]"
所以拼接在URL上的时候成了这个样
let url = ondutybase + '接口?acounts='+"[object]"
导致URL不能直接成为下载的链接
上一篇: POI导出快速入门案例
下一篇: 折半查找法