jQuery Table2CSV插件(表格转CSV) 完美支持colspan和rowspan
table2csv:将表格转化为csv数据
参数:一个JSON对象
{
'repeatChar':'拆分单元格填充字符', //默认为null则将单元格值填充到拆分的每个单元格中,如果给定字符串则用给定字符串填充
'callback':'回调函数' //传入两个参数(csv,data),分别为csv字符串和data二维数组
}
(function($){ $.fn.table2csv=function(option){ if(option==null) option={}; if(option.repeatChar=='') option.repeatChar="-"; //计算行数列数 var rows=0; //行 var cols=0; //列 this.find("tr").each(function(){ rows+=1; var tr=$(this); var n=tr.find("td,th").length; cols=Math.max(cols,n); }); //document.title=("行/列:"+rows+"/"+cols); //空数组准备 var data=new Array(); for(var i=0;i<rows;i++){ var line=new Array(); for(var j=0;j<cols;j++) line.push(''); data.push(line); } //数据填充 var i=0;//当前行坐标 this.find("tr").each(function(){ var tr=$(this); var j=0;//当前列坐标 tr.find("td,th").each(function(){ var td=$(this); var colspan=1; var rowspan=1; var value=td.text(); if(td.attr("colspan")!=null) colspan=parseInt(td.attr("colspan")); if(td.attr("rowspan")!=null) rowspan=parseInt(td.attr("rowspan")); //定位CSV数组中第一个没有数据的单元格 for(var p=0;p<data[i].length;p++){ if(data[i][p]==''){ j=p; break; } } data[i][j]=value;//填充值 if(colspan+rowspan==2) return; //如果不是合并单元格,返回并继续each //填充单元格区域 var fic=i+rowspan; //alert(value+i+":"+j); for(var fi=i;fi<fic;fi++){ var fjc=j+colspan; //alert(""+j+"\r\n"+fic+":"+fjc); for(var fj=j;fj<fjc;fj++){ if((fj==j)&&(fi==i)) continue; data[fi][fj]= (option.repeatChar==null)? value :option.repeatChar; //alert(test(data)); } } }); i++; }); //填充完毕 //生成调试数据 var str=""; for(var i in data){ str+=data[i].join(","); str+="\r\n"; } if(option.callback!=null) option.callback(str,data); }; ///////////////////////////////// $.fn.csv2table=function(param){ var isarray=param instanceof Array; var data=null; if(isarray)//数组直接用 data=param; else{//csv字符串则转为数组 data=new Array(); var lines=param.split('\r\n'); for(var i=0;i<lines.length;i++){ var cells=lines[i].split(','); data.push(cells); } } var table="<table border='1'>"; for(var i=0;i<data.length;i++){ table+="<tr>"; var cells=data[i]; for(var j=0;j<cells.length;j++) table+=("<td>"+cells[j]+"</td>"); table+="</tr>"; } table+="</table>"; table+=(isarray?"<!--数组-->":"<!--字串-->"); this.html(table); } })(jQuery);
测试界面(将表格中的内容转为csv,然后再将csv生成为第二个表格):
jQuery Table2CSV插件(表格转CSV) 完美支持colspan和rowspan的更多相关文章
- JS table内容转成二维数组,支持colspan和rowspan
思路:1.先初始化colspan的数据到数组2.根据rowspan和colspan计算th和td的矩阵二次填充数组 说明:需要引用到第三方库jQuery,table中的th和td行和列跨度必须正确 & ...
- 推荐10款 好用的 Jquery 评分插件
Raty jQuery Raty这是一个能够自动生成可定制的星级评分jQuery插件.可以自定义图标,创建各种评级组合,星星数量,每一颗星星的注释,可以在当一个星星被点击时的加回调函数. 地址: Ra ...
- jquery水印插件:placeholder
jquery水印插件:placeholder 有的浏览器支持html5的水印placeholder(如Crome,firefox,ie10+),有的不支持html5的placeholder(ie9,i ...
- 使用jQuery.form插件,实现完美的表单异步提交
传送门:异步编程系列目录…… 时间真快,转眼一个月快结束了,一个月没写博客了!手开始生了,怎么开始呢…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 月份的尾巴,今天的主 ...
- Perfect Scrollbar – 完美的 jQuery 滚动条插件
Perfect Scrollbar 是一个很小的,但完美的 jQuery 滚动插件.滚动条不会影响原来的设计布局,滚动条的设计是完全可定制的.你可以改变几乎所有的 CSS 样式的滚动条,滚动条设计对脚 ...
- AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件
AudioPlayer.js是一个响应式.支持触摸操作的HTML5 的音乐播放器.本文是对其官网的说用说明文档得翻译,博主第一次翻译外文.不到之处还请谅解.之处. JS文件地址:http://osva ...
- jquery银行电子账单表格填入和编辑插件
jquery银行电子账单表格填入和编辑 前段时间做的一个银行表格账单的jquery插件,用于金额写入和编辑的应用,希望对大家有所帮助,发现问题欢迎回复 ;(function($){ function ...
- 15 个最佳的 jQuery 布局插件【转】
英文原文:15 Best jQuery Grid Plugins for Developers 现如今,网站开发设计的需求会要求自动适应所有移动设备,即响应式网站: 在开发网站时必须考虑对平板设备融合 ...
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
随机推荐
- 设置IE浏览器代理上网
在局域网中,服务器可以直接通过IE网上冲浪,而工作站要想通过IE上网,如果是在服务器使用代理软件的情况下,其IE需要设置代理. 步骤一:启动IE浏览器,选择"工具",再" ...
- DELPHI关闭瑞星监控的源代码
program Project1; uses Windows, Messages, SysUtils; procedure DeleteMe; var BatchFile: TextFile; Bat ...
- hdoj 1071 The area
The area Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- unigui多页签UI框架
procedure TMainForm.openForm(Caption, FormClassName: string);var i: integer; sheet: TUniTabSheet;beg ...
- [OC Foundation框架 - 8] NSArray排序
1.派生 voidarrayNew() { NSArray*array = [NSArrayarrayWithObjects:",nil]; NSArray*array2 = [arraya ...
- ASP.NET奇葩说
1.form表单 在asp.net中(即runat="server"特性时)method默认值为post 在html中默认是get. 2.Web应用程序项目和网站项目:前者后台文 ...
- MySQL 常用语句 (汇集)
原文地址:MySql常用语句作者:wuyanle 一.mysql常用语句 创建,删除和最基本查询: 显示数据库 mysql->show databases; 创建数据库 mysql-> ...
- Java Singleton 单例模式
大家可能还听过 Singleton 也就是单例模式 这个单例模式要求 在程序的运行时候 一个程序的某个类 只允许产生一个 实例 那么 这个类就是一个单例类 Java Singleton模式主要作 ...
- 写给新入IT的新人们
IT=挨踢,这是IT人的自嘲,进入IT行业是有四五年了,也算得上是一个"老人"了吧,见了不少新人,面试了不少新人,也带了一些新人,多多少少还是有点发言权的. 关于书本 新人们经常会 ...
- java 引用类型及作用
0. 引言 Java 中一共有 4 种类型的引用 : StrongReference. SoftReference. WeakReference 以及 PhantomReference , 这 4 种 ...