一、需求
在我们的日常开发中,可能经常需要遇到excel的导出,以往excel的导出服务器端都是使用的
GET
方法,但是某些情况下,服务器端只能使用
POST
方法,那么我们有没有好的方法实现excel的导出呢,并且页面最好不要刷新。
二、实现思路
1、方案一:我们可以使用
ajax
拿到服务器端返回的
数据下载流
,然后借助
Blob
对象,在动态的创建一个
a
链接,那么也可以实现。
2、方案二:动态创建一个
iframe
标签下载,这种方案可以
POST
请求可能就无法下载了。
3、方案三:页面上动态的创建一个
form
然后提交这个
form
。
此处我们使用
方案一
即使用
ajax
来实现。
三、实现步骤
1、
ajax
请求的发送我们使用
axios
库来完成,
axios
的
responseType
需要设置成
Blob
,默认是
json
。
2、创建
Blob
对象
3、创建
a
标签
4、触发下载动作
四、前端代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax 文件导出</title>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<button type="button" onclick="exportExcel()">导出</button>
<script type="text/javascript">
function exportExcel() {
axios({
method: 'POST',
url: "http://localhost:8080/export",
timeout: 5000,
responseType: 'blob'
}).then(function (res) {
var data = res.data;
var blob = new Blob([data], {type: 'application/octet-stream'});
var url = URL.createObjectURL(blob);
var exportLink = document.createElement('a');
exportLink.setAttribute("download","ajax文件下载.xlsx");
exportLink.href = url;
document.body.appendChild(exportLink);
exportLink.click();
})
}
</script>
</body>
</html>
完整代码如下
ajax文件下载
https://gitee.com/huan1993/front/tree/master/ajax-download
pymysql insert 动态数据
http://www.oracle.com/technology/global/cn/sample_code/tech/pl_sql/htdocs/x/Case/start.htm虽然 CASE 结构基本上没有给出任何新的语义,但它们的确接受一种更简洁的表示法,并且相对于 IF 结构表示法而言消除了一些重复。看下面的判定表的执行情况,是依据特殊表达式的值来决定执行情况。程序段… case n
cv命名空间是opencv3引入的还是opencv4引入的
Opencv 从c到c++
Opencv2.0版本发布后,其新的C++接口,cv::Mat代替了原来c风格的CvMat和IplImage.目前,2.0版本对c的接口也是支持的。
相对于c的接口,c++的cv::Mat统一了矩阵和图像这两个概念。事实上,矩阵和图像其实是一样的。由于cv::Mat是c++的类,所以也具备了相关的一些特征。例如,内存的释放。在C++中,一个对象超出其使用范围后,会自
dockercompose部署portainer
文章目录一、文件结构二、配置文件三、创建nacos数据库四、docker-compose.yml文件五、创建容器六、验证 一、文件结构conf #配置文件夹
application.properties #配置文件
data #数据文件夹
logs #日志文件夹二、配置文件vi application.properties #新建配置文件配置信息如下:# 数据库相关配置
spring.d