POST方式导出Excel文件
1.方法一:
一般情况下,我们通过ajax获取数据都是采用get方式获取,但如果ajax的请求url过长时,get方式由于浏览器对url长度不同会导致无法正常获取数据,尤其是IE。
这时候,我们需要通过post请求的方式获取数据,而如果我们需要通过post方式导出Excel表格,则需要通过表单提交的方式导出Excel。
function postExcelFile(params, url) { //params是post请求需要的参数,url是请求url地址var form = document.createElement("form");form.style.display = 'none';form.action = url;form.method = "post";document.body.appendChild(form);for(var key in params){var input = document.createElement("input");input.type = "hidden";input.name = key;input.value = params[key];form.appendChild(input);}form.submit();form.remove();}//点击导出按钮导出excel表格exportButton.onclick = function() {var params = {};postExcelFile(params, "http://www.XXX_excel");}
嘿嘿,完美解决问题!如果后端返回服务器异常,则需要后台配合修改了。
链接:https://blog.csdn.net/qq_33036599/article/details/80844430
2.方法二. 采用Post请求的方式提交参数并导出excel
一般情况下,我们都是采用get请求的方式导出excel。例如采用如下方式:
var exportUrl = '/xxx;';
window.open(exportUrl);
导出excel所需的逻辑参数拼接到url上即可。
但是,如果我们需要提交大量的参数到后台才能导出excel, 亦或者我们提交的参数中有中文,get提交乱码了,那么就可能想使用post提交的方式来导出excel。因为post提交支持更多的参数,从而能解决get提交对url长度的限制问题。
然而,一般的post提交表单,意味着主页面也会一起刷新,体验较差。那么,这里将提供一个仿异步post提交导出excel的实例。
代码如下:
_export = {canExport:false,post:function(data,exportUrl) {_export.canExport = true;if ($('#exportIframe').length > 0) {$('#exportIframe').remove();}$('body').append('<iframe id="exportIframe" width="0" height="0" src="'+domain+'/export"></iframe>');$('#exportIframe').load(function() {if (_export.canExport) {var formData = '<form method="post" action='+exportUrl+' >';for (var name in data) {formData = formData + '<input type="text" name="'+name+'" value="'+data[name]+'" />';}formData = formData + '<input type="submit" id="submitExportForm"/>';formData = formData + '</form>';$(this).contents().find('body').append(formData);$(this).contents().find('#submitExportForm').click();_export.canExport = false;}});}
}
调用方式:
_export.post(submitData,exportUrl);
注意,这里的submitData是使用jquery构建key:value的form参数对象。传入导出方法后被解析还原成form表单数据。
代码的思路就是,利用隐藏的iframe内嵌模块,在iframe内部post表单提交导出我们想要的数据,页面翻转也仅发生在iframe内部,
我们的主页面并不会发生翻转,从而达到仿异步post导出的效果。
参考链接:http://www.codedocs.net/coding/302.html
POST方式导出Excel文件相关推荐
- php 使用table方式导出excel文件
这些天在使用PHPExcel导出数据时,5000条数据竟然挂了.后来跟同事聊聊,有些明悟,PHPExcel做了很多处理,我在这里理解为渲染,就会暂用过多的空间,'膨胀'的空间导致内存暂用过大,就挂了. ...
- 导出excel文件数字会自动变科学计数法的解决方式
将数据导出excel文件变成科学计数法问题:分析:用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式.其实这个问题跟用什么语言导出 ...
- C#导出Excel文件,过长数值显示为科学计数法解决方法 C#
C#导出EXCEL文件,身份证号码或某些ID内容长度超过15个数字,这样导出的Excel文件中默认情况下将这个值以科学计数方式显示,下面提供两种解决方式: 1.在转出的内容前,加上一个TAB符号,C# ...
- springboot中使用poi导出excel文件(亲测实现了第一个功能)
1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...
- java导入、导出Excel文件
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- 如何使用JavaScript实现纯前端读取和导出excel文件(转)
转自小茗同学博客:https://www.cnblogs.com/liuxianan/p/js-excel.html js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯 ...
- Java 导出 Excel 文件
目前,很多报表,都需要导出Excel文件 首先,maven <dependency><groupId>org.apache.poi</groupId><art ...
- h5页面如何预览excel文件_如何使用JavaScript实现前端导入和导出excel文件?(H5编辑器实战复盘)...
前言 最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解 ...
- 如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)
前言 最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解 ...
最新文章
- SpringCloud核心组件及其作用
- 底层原理_Spring框架底层原理IoC
- flask执行python脚本_如何在Flask中运行python脚本
- Bumblebee微服务网关之并发限制
- 7-46 新浪微博热门话题 (30 分)(思路+详解+set + map)pta逐个点过的 来呀兄弟们
- Firefox 使用 Chrome 浏览器的 PDF 和 Flash 插件
- 学计算机的能看出批图吗,高手教你:如何看出一张图有没有被 P 过?
- 从np.random.normal()到正态分布的拟合
- 01_项目需求与实体分析(servlet+java bean+jsp的商城教程)
- 纯js开发android,js开发app_安卓app开发引擎
- 通过程序启动QQ,实现自动登录.
- php 控制骰子概率,jQuery+PHP实现的掷色子抽奖游戏实例
- FLOW 3D二次开发
- 项目生命周期和产品生命周期的不同
- 摩拜+小程序,让单车变得“触手可骑”
- java pdf转png
- Oracle数据库学习(六):where条件查询及关键字使用
- 工具栏ToolStrip
- C#:使用Spire.xls写Excel数据
- 以网游服务端的网络接入层设计为例,理解实时通信的技术挑战
热门文章
- 2022.2.13短线买点
- python实现qq自动点赞_Python实现QQ自动点赞
- end-to-end train 是什么意思
- c语言狗脸字符画,网络强势语言模因传播力的学理阐释-人口研究.pdf
- 如果你现在有100万靠理财年化收益需要多少才能支撑30年,用C语言写的简单计算程序
- 多张图片合成连续动画
- html5,css3,es6新特性总结
- patchwall 与鸿蒙对比,量子点+PatchWall带来易用高画质体验、小米电视5Pro评测 | 钛极客...
- asterisk mysql set(cdr(u_asterisk 相关数据库配置 使用
- Android 12.0 进入recovery模式(等待用户选择recovery模式界面)进入自动恢复出厂设置模式