导出jqgrid表格数据为EXCEL文件,通过tableExport.js插件。
今天公司项目需要做个导出功能,将jqgrid查询出的数据导出为EXCEL表格文件,期间遇到两个问题:
1.导出报错
uncaught exception: INVALID_CHARACTER_ERR: DOM Exception 5
,原因是插件是老外写的,不支持中文。
2.使用官方的导出代码//$('#jqgrid1').tableExport({ type: 'excel', fileName: new Date().getTime(), escape: 'false' });,导出的EXCEL文件没有表头,并且数据最上方多了一行空白行。
下面我们就来说说怎么处理这两个问题。
首先说一下这个插件下载地址:
Jquery tableExcel.js下载地址:https://github.com/kayalshri/tableExport.jquery.plugin
这个插件功能很强大,支持以下导出格式:
JSON
XML
PNG
CSV
TXT
SQL
MS - Word
Ms - Excel
Ms - Powerpoint
PDF
今天只介绍我在使用此插入导出EXCEL过程中遇到的问题解决方法。
第一个问题解决方法:
打开jquery.base64.js文件,
在
return {
decode: _decode,
代码上方,添加两个方法,代码如下:
// private property
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // private method for UTF-8 encoding
function utf8Encode(string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
} function encode(input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = utf8Encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
keyStr.charAt(enc1) + keyStr.charAt(enc2) +
keyStr.charAt(enc3) + keyStr.charAt(enc4);
}
return output;
}
然后将代码:
return {
decode: _decode,
encode: _encode,
VERSION: _VERSION
};
改为:
return {
decode: _decode,
encode: function (str) {
return encode(str);
},
VERSION: _VERSION
};
即可解决。
第二个问题解决办法:
将默认导出代码修改为以下代码:
var tableid = "jq1";
var dd = $("#gbox_" + tableid + ' .ui-jqgrid-htable thead');
var ee = $('#' + tableid);
ee.find('.jqgfirstrow').remove();//干掉多余的无效行
ee.find('tbody').before(dd);//合并表头和表数据
ee.find('tr.ui-search-toolbar').remove();//干掉搜索框
ee.tableExport({ type: 'excel', escape: 'false', fileName: '导出' + new Date().getTime() });
var a = $("#" + tableid).find('thead');//把合并后的表头和数据拆分
$("#gbox_" + tableid + ' .ui-jqgrid-htable').append(a);
参考博客:
通过tableExport.js插件来实现导出Excel/Pdf/txt/json等 - xingyuqihuan的博客 - CSDN博客 https://blog.csdn.net/xingyuqihuan/article/details/79139778
jqgrid实现客户端导出Excel、txt、word、json等数据格式的文件 - 无欲则刚 - CSDN博客 https://blog.csdn.net/qq_29542611/article/details/72657802
导出jqgrid表格数据为EXCEL文件,通过tableExport.js插件。的更多相关文章
- 导出网页表格数据为Excel文件的前端解决方案
在工作中,我们有时会遇到这样的需求,比如:要把页面的表格数据导出为Excel文件.在此记录下自己用的解决方法.代码如下: function tableToExcel(data){ //要导出的数据,t ...
- PHP导出MySQL数据到Excel文件
PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...
- java 写入数据到Excel文件中_Demo
=======第一版:基本功能实现======= import com.google.common.collect.Maps; import org.apache.log4j.Logger; impo ...
- 使用POI导出百万级数据到excel的解决方案
1.HSSFWorkbook 和SXSSFWorkbook区别 HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls,一张表最大支持65536行数据,256列 ...
- Python:将爬取的网页数据写入Excel文件中
Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...
- 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件
小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- 自动更新开奖数据的excel文件,供大家下载
自动更新开奖数据的excel文件,供大家下载 2010-03-14 20:22 228492人阅读打印来源:乐彩网 作者:eren 很多人拥有自制excel电子表格,常要更新最基本的开奖信息.如有多期 ...
- excel数据 入库mysql 和 mysql数据 导入excel文件
1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...
随机推荐
- 全局解释器锁 GIL
1.什么是GIL? GIL本质上是互斥锁,可以将并发运行变为串行,以此来控制同一时间内共享数据只能被一个任务修改,保证时间安全 2.GIL应用场景 使用原因:Cpython解释器自带垃圾回收机制不是线 ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习5
#include <iostream>using namespace std;struct CandyBar{ char kind[20]; float weight; int calor ...
- sklearn神经网络分类
sklearn神经网络分类 神经网络学习能力强大,在数据量足够,隐藏层足够多的情况下,理论上可以拟合出任何方程. 理论部分 sklearn提供的神经网络算法有三个: neural_network.Be ...
- dedecms在后台替换文章标题、内容、摘要、关键字
dedecms在后台替换文章标题.内容.摘要.关键字所在的字段为: 后台替换文章内容 数据表:dede_addonarticle 字段:body 后台替换文章摘要内容 数据表:dede_archive ...
- JAVA自学笔记20
JAVA自学笔记20 1.递归: 1)方法定义中定义中调用方法本身的现象 2)要有出口,否则就是死递归 次数不能太多.否则内存将溢出 构造方法不能递归使用 //斐波那契数列:1,1,2,3,5,8,1 ...
- poj3320 Jessica's Reading Problem(尺取思路+STL)
https://vjudge.net/problem/POJ-3320 尺取法,要想好组织方式. 又被卡了cin.. #include<iostream> #include<cstd ...
- django之模型层(model)--多表相关操作(图书管理小练习)
前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...
- 07、RDD持久化
为了避免多次计算同一个RDD(如上面的同一result RDD就调用了两次Action操作),可以让Spark对数据进行持久化.当我们让Spark持久化存储一个RDD时,计算出RDD的节点会分别保存它 ...
- js-工具函数
/** * 将文件大小转换成 ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],单位 * @param bytes * @returns */ ...
- hadoop-网站收藏
Ubuntu14.04安装配置Hadoop2.6.0(完全分布式)与 wordcount实例运行 http://www.linuxidc.com/Linux/2015-01/112029p2.htm ...