注意:

  1. 这个代码只对表头在第一行的表格有效
  2. 这里的angular.element()就是取jQuery对象,写成$()是一样的,注意引入jquery
  3. 这里的angular.forEach()forEach()方法是一样的
  4. json转成html没有合并行,最后给出了第一列的合并方法,后期再修改。
// table_id:需要转化成json的表格id,返回json数组function htmlToJson(table_id){var table = angular.element('#'+table_id);var data = [];if(!table.length){return data;}var vtable = table.clone();var thead = [];// 这里表头如果是用的td可以在find里面写成 tr:first-child tdangular.forEach(vtable.find('th'),function(value,index){thead.push(value.innerHTML)});// 补全表格,去除rowspan colspanangular.forEach(vtable.find('tr'),function(trv,tri){angular.forEach(angular.element(trv).children(),function(tdv,tdi){if(tdv.getAttribute('rowspan')){var rowspan = parseInt(tdv.getAttribute('rowspan')) || 1;tdv.removeAttribute('rowspan');var current_tr = angular.element(trv);var rowspan_node = null;while (rowspan > 1) {rowspan_node = angular.element(tdv).clone();current_tr.next().children().eq(tdi).before(rowspan_node);current_tr = current_tr.next();rowspan--;}}if(tdv.getAttribute('colspan')){var colspan = parseInt(tdv.getAttribute('colspan')) || 1;tdv.removeAttribute('colspan');var colspan_node = null;while (colspan > 1) {colspan_node = angular.element(tdv).clone();angular.element(tdv).after(colspan_node);colspan--;}}});});// 获取表格数据json数组angular.forEach(vtable.find('tr'), function (trv, tri) {var row_data = {};angular.forEach(angular.element(trv).children(), function (tdv, tdi) {row_data[thead[tdi]] = tdv.innerText;});data.push(row_data);});// 假设第一行是表头return data.slice(1);}// data:需要转化成html表格的json数组,返回生成的table节点function jsonToHtml(data){var thead = '';angular.forEach(Object.keys(data[0]),function(value,index){thead += "<th>" + value + "</th>"});thead = "<tr>" + thead + "</tr>";var row = "";var tbody = '';angular.forEach(data, function (value, index) {row = "";angular.forEach(Object.keys(value), function (v, i) {row += "<td>" + value[v] + "</td>";});row = "<tr>" + row + "</tr>";tbody += row;});var table = document.createElement('table');table.innerHTML = thead + tbody;return table;}
// 对第一列合并相同项,传入table里面的字符串对象,返回合并后的字符串对象(今天搞得太晚了,还真是朝9晚9的生活啊,先吃完饭在来优化吧,饿的了脑子飞了)
function firstColMerge(str) {var table = document.createElement('table');table.innerHTML = str;$scope.table = angular.element(table);var rowspan = 1;var last_td = document.createElement('td');angular.forEach($scope.table.find('tr td:first-child'), function (value, key) {if (last_td.innerHTML === value.innerHTML) {value.style.display = "none";rowspan++;last_td.setAttribute("rowspan", rowspan);} else {last_td = value;rowspan = 1;}});return $scope.table.html();}

JSON数据和html表格的互相转换相关推荐

  1. Python:json数据与Python对象之间的转换

    json数据与Python对象之间的转换 1.前面介绍了在Python中如何处理json数据,主要使用了以下几个方法     ⑴dumps():将Python对象转换为JSON格式的字符串     ⑵ ...

  2. excel两个表格数据对比_vue实现json数据导出Excel表格

    因为项目的需要, 需要从前端导出表格,今天一个坑踩了一个小时,特别分享给大家 Vue导出json数据到Excel表格 一,安装依赖(三个缺一不可) npm install file-saver --s ...

  3. Python爬虫项目:爬取JSON数据存储Excel表格与存储图片

    随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战.搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Googl ...

  4. 如何在线快速把json数据转excel表格

    工作中经常会遇到需要把json转成可视化的结构数据,例如excel,否则json数据根本没法阅读,本人工作中之前是把微信好友转出来是json格式,需要转成excel才能方便阅读,这里推荐一个在线转js ...

  5. vue 渲染JSON数据动态生成表格组件

    vue 通过渲染JSON数据动态生成表头及对应表格内容组件 <template><div id="viewDialog"><el-button typ ...

  6. JSON数据和JAVA对象之间的转换

    方法1: 利用阿里巴巴开源的fastjson包进行JAVA对象和JSON字符串进行转换. C++中的结构体在JAVA中用对象表示,目录结构如下: Peron类内容如下,对应C++中的Person结构体 ...

  7. JS中将 JSON 数据转换为 Excel 表格的详细步骤如下:

    工作中 后端 那为兄弟 用java把execl的数据转为json格式发我了,他问我能不能用js把josn在转为execl格式 然后 我就开始了 项目地址 下载 xlsx 库 在使用 xlsx 库之前, ...

  8. 『解疑』前端通过json数据导出excel表格文件(支持多级表头、复杂表头)(json转excel)

    问题 如何友好的通过规范的json数据导出成excel文件. 解题 制定规范的json数据结构: ( 只要将现有的数据处理成以下格式即可导出 ) {headerList: [ // 多级表头(2选1即 ...

  9. vue中导出json数据为excel表格并保存到本地

    继我上次成功利用vue和elemen把excel的数据导入至前端vue,因为excel表中的数据有些必填项没有填写或者填写错误(比如写错字)所以就要将没有成功导入的数据导出成一份excel表并保存至本 ...

最新文章

  1. wxpython分割窗口_wxPython实现分隔窗口
  2. CSS 禁止文字选中
  3. Qt paintevent事件
  4. MyBatis中的@Mapper注解及配套注解使用详解
  5. 如果只看一篇文章弄懂Pfile与spfile,那么这篇就够了……
  6. 在浏览器中进行深度学习:TensorFlow.js (十二)异常检测算法
  7. 计算机为何如此普遍英语论文,计算机英语论文
  8. ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习
  9. [css] 说说你对相对定位、绝对定位、固定定位的理解
  10. work2的code和问题
  11. idea jar包导入_IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)
  12. 你可能没有想过自己缺钱花的原因
  13. Bailian4109 公共朋友-Common Friends【关系】
  14. 现代汉语常用汉字3500表
  15. 基础晶体管放大电路设计七步走
  16. 目前主流的几种数字视频压缩编解码标准(转载)
  17. linux做pptpd服务,PPTPD搭建
  18. P1287 盒子与球题解【python】
  19. AtCoder Beginner Contest 192
  20. Google 让你创作自己的 “巴黎之恋” 搜索广告

热门文章

  1. YOLOv7 | 模型结构与正负样本分配解析
  2. 汽车融资租赁借助君子签,实现业务合同电子化,风控智能化
  3. 愿你历经千帆,得偿所愿
  4. Scala版本冲突--java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()
  5. 减法公式运算法则_小学数学加减乘除计算运算法则
  6. 移动端点击加qq好友和加入qq群
  7. 台达DOP系列触摸屏上传程序时提示“中止传输数据”怎样解决?
  8. Office 2016系列下载地址
  9. zigbee CC2530 系列教程 10 看门狗实验
  10. java 删除oss 文件