jqgrid导出excel文档

简介: 喜欢的朋友可以关注下,粉丝也缺。        最近一个项目中需要把jqgrid的数据导出成excel文档,所以去查询一下jq的文档,它所提供的接口是需要收费的,当时我就一脸嫌弃的表情。

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

        

最近一个项目中需要把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+", "\n");
        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

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


相关文章
|
2月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
155 5
|
2月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
37 1
|
2月前
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
226 3
|
3月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
165 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
2月前
|
Java API Apache
|
2月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
98 4
|
3月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
142 6
|
3月前
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
1110 0
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
112 10
|
3月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
182 4