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文件相关推荐

  1. php 使用table方式导出excel文件

    这些天在使用PHPExcel导出数据时,5000条数据竟然挂了.后来跟同事聊聊,有些明悟,PHPExcel做了很多处理,我在这里理解为渲染,就会暂用过多的空间,'膨胀'的空间导致内存暂用过大,就挂了. ...

  2. 导出excel文件数字会自动变科学计数法的解决方式

    将数据导出excel文件变成科学计数法问题:分析:用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式.其实这个问题跟用什么语言导出 ...

  3. C#导出Excel文件,过长数值显示为科学计数法解决方法 C#

    C#导出EXCEL文件,身份证号码或某些ID内容长度超过15个数字,这样导出的Excel文件中默认情况下将这个值以科学计数方式显示,下面提供两种解决方式: 1.在转出的内容前,加上一个TAB符号,C# ...

  4. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  5. java导入、导出Excel文件

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  6. 如何使用JavaScript实现纯前端读取和导出excel文件(转)

    转自小茗同学博客:https://www.cnblogs.com/liuxianan/p/js-excel.html js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯 ...

  7. Java 导出 Excel 文件

    目前,很多报表,都需要导出Excel文件 首先,maven <dependency><groupId>org.apache.poi</groupId><art ...

  8. h5页面如何预览excel文件_如何使用JavaScript实现前端导入和导出excel文件?(H5编辑器实战复盘)...

    前言 最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解 ...

  9. 如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)

    前言 最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解 ...

最新文章

  1. SpringCloud核心组件及其作用
  2. 底层原理_Spring框架底层原理IoC
  3. flask执行python脚本_如何在Flask中运行python脚本
  4. Bumblebee微服务网关之并发限制
  5. 7-46 新浪微博热门话题 (30 分)(思路+详解+set + map)pta逐个点过的 来呀兄弟们
  6. Firefox 使用 Chrome 浏览器的 PDF 和 Flash 插件
  7. 学计算机的能看出批图吗,高手教你:如何看出一张图有没有被 P 过?
  8. 从np.random.normal()到正态分布的拟合
  9. 01_项目需求与实体分析(servlet+java bean+jsp的商城教程)
  10. 纯js开发android,js开发app_安卓app开发引擎
  11. 通过程序启动QQ,实现自动登录.
  12. php 控制骰子概率,jQuery+PHP实现的掷色子抽奖游戏实例
  13. FLOW 3D二次开发
  14. 项目生命周期和产品生命周期的不同
  15. 摩拜+小程序,让单车变得“触手可骑”
  16. java pdf转png
  17. Oracle数据库学习(六):where条件查询及关键字使用
  18. 工具栏ToolStrip
  19. C#:使用Spire.xls写Excel数据
  20. 以网游服务端的网络接入层设计为例,理解实时通信的技术挑战

热门文章

  1. 2022.2.13短线买点
  2. python实现qq自动点赞_Python实现QQ自动点赞
  3. end-to-end train 是什么意思
  4. c语言狗脸字符画,网络强势语言模因传播力的学理阐释-人口研究.pdf
  5. 如果你现在有100万靠理财年化收益需要多少才能支撑30年,用C语言写的简单计算程序
  6. 多张图片合成连续动画
  7. html5,css3,es6新特性总结
  8. patchwall 与鸿蒙对比,量子点+PatchWall带来易用高画质体验、小米电视5Pro评测 | 钛极客...
  9. asterisk mysql set(cdr(u_asterisk 相关数据库配置 使用
  10. Android 12.0 进入recovery模式(等待用户选择recovery模式界面)进入自动恢复出厂设置模式