jqgrid导出excel文档

小编 2026-07-06 阅读:554 评论:0
喜欢的朋友可以关注下,粉...

喜欢的朋友可以关注下,粉丝也缺。

        

最近一个项目中需要把jqgrid的数据导出成excel文档,所以去查询一下jq的文档,它所提供的接口是需要收费的,当时我就一脸嫌弃的表情。

        无奈之举只能自己想办法了,前思后想,突然灵光一闪,可以把数据提交到后台通过后台写出到文档。

        首先我封装了一个js把jq的数据提交的后台,下面我们来看看这个封装的js:

        

function getXlsFromTbl(table_id, container_id ,form_id, title, rownumbers) {  		    try {  		        var content = "";  		        if (table_id != null && table_id != "" && table_id != "null") {  		        content = getTblData($('#' + table_id), $('#' + container_id), rownumbers);  		        }  		        if (content == "") {  		            alert("表格不存在");  		            return;  		        }  		        var fileName = getExcelFileName(title);  		          		        doFileExport($('#' + form_id), fileName, content);  		    }  		    catch (e) {  		        alert("导出异常:" + e.name + "->" + e.description + "!");  		    }  	}        function getTblData(tableobj, containerobj, rownumbers) {  		    var outStr = "";  		    if (tableobj != null) {  		        var rowdata = tableobj.getRowData();  		        var Lenr = 1;  		        for (i = 0; i < Lenr; i++) {  		            //var Lenc = curTbl.rows(i).cells.length;  		            var th;  		            if (rownumbers == false) {  		                th = containerobj.find('TH:not(:first-child)');  		            }  		            else {  		                th = containerobj.find('TH');  		            }  		            th.each(function(index, element) {  		                var j = index + 1;  		                var content = $(element).text();  		                content = content.replace(/(^s*)|(s*$)/g, "");//去掉空格  		                outStr += content + ",";  		            });  		            outStr += "+nl+";  		        }  		        var tmp = "";  		        for (i = 0; i < rowdata.length; i++) {  		            var row = eval(rowdata[i]);  		            for (each in row) {  		            var temp = $(row[each]).text();  		            if($(row[each]).text() == null || $(row[each]).text() == ""){  		            	    if(row[each].charAt(0) != '<')  		            	    	 outStr += row[each] + ",";  		            }  		             else  		            	     outStr += $(row[each]).text() + ",";  		            }  		            outStr += "+nl+";  		        }  		    }  		    else {  		        outStr = null;  		        alert(inTbl + " null!");  		    }  		    return outStr;  		}            function getExcelFileName(title) {  		    var d = new Date();  		    var curYear = d.getYear();  		    var curMonth = "" + (d.getMonth() + 1);  		    var curDate = "" + d.getDate();  		    var curHour = "" + d.getHours();  		    var curMinute = "" + d.getMinutes();  		    var curSecond = "" + d.getSeconds();  		    if (curMonth.length == 1) {  		        curMonth = "0" + curMonth;  		    }  		    if (curDate.length == 1) {  		        curDate = "0" + curDate;  		    }  		    if (curHour.length == 1) {  		        curHour = "0" + curHour;  		    }  		    if (curMinute.length == 1) {  		        curMinute = "0" + curMinute;  		    }  		    if (curSecond.length == 1) {  		        curSecond = "0" + curSecond;  		    }  		    var fileName = title + "_" + curYear + curMonth + curDate + "_"  		            + curHour + curMinute + curSecond + ".csv";  		  		  		    return fileName;  		}            function doFileExport(formobj, filename, content) {  		   formobj.html("<input id='filename' name='filename' type='text' style='display: None'><input                             id='content' name='content' type='text' style='display: none'>");  		       $("#filename").val(filename);  		       $("#content").val(content);  		       formobj.submit();  		       $("#gridTable").trigger("reloadGrid");		                   }


上面就是封装的js文件,只需要在页面里调用一下方法就行,需要注意的是页面上需要一个form表达一个div容器包含table示例如下:

  

<form id="download_form" method="post"  target="_blank" action="/liushouet/DownLoadTableDataAction">  	 <div id="table_container">  	           <table id="gridTable"></table>                   <div id="gridPager"></div>	 </div>  </form>

  接下来只需要在后台里面写一段java代码就好了,就可以把jq的数据导出到excel里面。

    

protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("gbk");        String content = request.getParameter("content");        String filename = request.getParameter("filename");        content = content.replace("+nl+", "
");        response.setContentType("application/octet-stream;charset=gbk");        response.setHeader("content-disposition", "attachment;filename=" + filename);        BufferedOutputStream write = new BufferedOutputStream(response.getOutputStream());        write.write(content.getBytes("gbk"));        write.flush();        write.close();    }

    就是这么的简单,这里已经完了,一个完整的流程,对于jq的这个接口是要收费的真的必须鄙视一下,已经打算放弃这个插件,有好用的插件欢迎各位推荐下,欢迎各位喜欢水的加Q群308742428

喜欢的朋友可以关注下,粉丝也缺。


版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表