最近在做一个导出excel的功能,本来这个功能很简单,之前也做过没必要写,但是在做的时候发现一个问题,那就是传参参数过长的问题,听我细细道来。
【java学习|excel导出(使用window.open的post请求方式)】按理说导出是后台java做的事情,但是我这次是将前台的表格数据拼成json然后当做参数传到后台,具体方式是使用url将参数放到url中,那么问题来了,假如前台表格中的数据很多时,是用这种方式肯定会有问题,因为window.open 默认是使用get请求的方式来发送,我们知道get请求时,参数长度是有限制的,那么我们就得需要使用post的方式将参数传递过去。
下面我把前端 的代码粘贴出来:
//monitorSplashesExport 点击事件
$("#monitorSplashesExport").click(function(){
var tableDatahttps://www.it610.com/article/= "";
//表格数据中间用@@@隔开
var trList = $(".dataTables_scrollBody").find("table").find("thead").find("tr").children("th");
var theadArray = new Array();
for(var i=0;
i
先把数据封装起来,形成theadArray和 tableData 再调用 doExport(theadArray, tableData) 方法。
下面把window.open 封装成 post方式
//将window.open修改为post请求方式
function doExport(theadArray, tableData){
var url = "${ctx}/instantMeasure.do?formAction=doExportExcel";
var tempForm = $("
然后后端java代码如下:
else if("doExportExcel".equals(action)){
OutputStream os = null;
WritableWorkbook wbook = null;
try{
String theadArray = request.getParameter("theadArray");
String[] tHead = theadArray.split(",");
String tableData = https://www.it610.com/article/request.getParameter("tableData");
String[] tBody = tableData.split("@@@");
os = response.getOutputStream();
// 取得输出流
response.reset();
// 清空输出流
response.setHeader("Content-disposition", "attachment;
filename=testRed.xls");
// 设定输出文件头
response.setContentType("application/msexcel");
// 定义输出类型wbook = Workbook.createWorkbook(os);
// 建立excel文件
String tmptitle = "散点详情";
// 标题
WritableSheet wsheet = wbook.createSheet(tmptitle, 0);
// sheet名称// 设置excel标题
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD, false,
UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfont);
wcfFC.setBackground(Colour.AQUA);
wsheet.addCell(new Label(1, 0, tmptitle, wcfFC));
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD, false,
UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
wcfFC = new WritableCellFormat(wfont);
int count = 0;
//
// 开始生成主体内容
//表头从第二行开始
//表头
for(int i=0;
i
不积跬步无以至千里
不积小流无以成江海
推荐阅读
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- 接口|axios接口报错-参数类型错误解决
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- vue|Vue面试常用详细总结
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- css|我用css精灵图拼接了自己的英文名字,不会还有人不知道精灵图技术吧()
- css|css三角的做法及其案例