不需要行求和、列求和的查看 JSON格式化 动态生成表格 表格转置 行列转换 Excel导出

接上篇,新增行求和、列求和

完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<style type="text/css">
body
{
text-align: center;
} div
{
margin: 0 auto;
width: 600px;
} table
{
border-collapse: collapse;
margin: 0 auto;
text-align: center;
} table td, table th
{
border: 1px solid #cad9ea;
color: #666;
height: 30px;
} table thead th
{
background-color: #CCE8EB;
width: 100px;
} table tr:nth-child(odd)
{
background: #fff;
} table tr:nth-child(even)
{
background: #F5FAFA;
}
</style>
</head>
<body>
<div>
<input type="button" value="初始化" onclick="Init()" />
<input type="button" value="JSON格式化" onclick="Jsonformat()" />
<input type="button" value="生成表-方式1" onclick="Create1()" />
<input type="button" value="生成表-方式2" onclick="Create2()" />
<input type="button" value="导出Excel" onclick="Export()" />
<input type="button" value="行求和" onclick="RowSum()" />
<input type="button" value="列求和" onclick="ColSum()" />
<br />
<textarea id="jsonStr" style="width: 600px; height: 500px;">[{"指标":"指标","组织1":"组织1","组织2":"组织2","组织3":"组织3"},{"指标":"指标1","组织1":"1","组织2":"21","组织3":"31"},{"指标":"指标2","组织1":"2","组织2":"22","组织3":"32"},{"指标":"指标3","组织1":"3","组织2":"23","组织3":"33"},{"指标":"指标4","组织1":"4","组织2":"24","组织3":"34"}]</textarea>
</div>
<br />
<table id="tbinfo">
<thead>
</thead>
<tbody>
</tbody>
</table>
<script type="text/javascript">
var tbinfo = [];
var tbinfo2 = [];
var total_rows = 0;
var total_cols = 0;
function Init() {
$("#jsonStr").val('[{"指标":"指标","组织1":"组织1","组织2":"组织2","组织3":"组织3"},{"指标":"指标1","组织1":"1","组织2":"21","组织3":"31"},{"指标":"指标2","组织1":"2","组织2":"22","组织3":"32"},{"指标":"指标3","组织1":"3","组织2":"23","组织3":"33"},{"指标":"指标4","组织1":"4","组织2":"24","组织3":"34"}]');
$("#tbinfo thead").html("");
$("#tbinfo tbody").html("");
} function Jsonformat() {
try {
str = $("#jsonStr").val();
tbinfo = JSON.parse(str);
$("#jsonStr").val(JSON.stringify(tbinfo, null, '\t')); } catch (e) {
alert("json格式不正确");
return false;
}
} function Create1() { try {
str = $("#jsonStr").val();
tbinfo = JSON.parse(str);
} catch (e) {
alert("json格式不正确");
return false;
} var thead = "";
var cols = [];
var tbody = "";
$.each(tbinfo, function (row, n) {
if (row == 0) {
cols = Object.keys(n);
thead = thead + "<tr>";
for (var i = 0; i < cols.length; i++) {
thead = thead + "<th>" + n[cols[i]] + "</th>";
}
thead = thead + "</tr>";
$("#tbinfo thead").html(thead);
} else {
tbody = tbody + "<tr>";
for (var i = 0; i < cols.length; i++) {
tbody = tbody + "<td lw-row='" + row + "' lw-col='" + i + "' >" + n[cols[i]] + "</td>";
}
tbody = tbody + "</tr>";
}
});
$("#tbinfo tbody").html(tbody); total_rows = $("#tbinfo tr").length;
total_cols = $("#tbinfo tr").find("th").length;
} function Create2() { try {
str = $("#jsonStr").val();
tbinfo = JSON.parse(str);
} catch (e) {
alert("json格式不正确");
return false;
} tbinfo2 = [];
var cols = Object.keys(tbinfo[0]);
for (var i = 0; i < cols.length; i++) {
var tr = {};
$.each(tbinfo, function (index, n) {
tr[index] = n[cols[i]];
});
tbinfo2.push(tr);
} var thead = "";
var cols = [];
var tbody = "";
$.each(tbinfo2, function (row, n) {
if (row == 0) {
cols = Object.keys(n);
thead = thead + "<tr>";
for (var i = 0; i < cols.length; i++) {
thead = thead + "<th>" + n[cols[i]] + "</th>";
}
thead = thead + "</tr>";
$("#tbinfo thead").html(thead);
} else {
tbody = tbody + "<tr>";
for (var i = 0; i < cols.length; i++) {
tbody = tbody + "<td lw-row='" + row + "' lw-col='" + i + "' >" + n[cols[i]] + "</td>";
}
tbody = tbody + "</tr>";
}
});
$("#tbinfo tbody").html(tbody); total_rows = $("#tbinfo tr").length;
total_cols = $("#tbinfo tr").find("th").length; } function Export() {
if ($("#tbinfo tbody tr").size() == 0) {
alert("无数据");
} else {
tableToExcel("tbinfo", "测试");
}
} function base64(content) {
return window.btoa(unescape(encodeURIComponent(content)));
} function tableToExcel(tableID, fileName) {
var excelContent = $("#" + tableID).html();
var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>";
excelFile += "<head><meta charset='utf-8'><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>sheet1</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head>";
excelFile += "<body><table width='10%' border='1'>";
excelFile += excelContent;
excelFile += "</table></body>";
excelFile += "</html>";
var link = "data:application/vnd.ms-excel;base64," + base64(excelFile);
var a = document.createElement("a");
a.download = fileName + ".xls";
a.href = link;
a.click();
} function RowSum() {
if ($("#tbinfo tbody tr").size() == 0) {
alert("无数据");
return false;
}
var cols = $("#tbinfo tr").find("th").length;
var rows = $("#tbinfo tr").length;
var total_row = ""; if (total_cols < cols) {
for (var i = 0; i < rows; i++) {
if (i == 0) {
$("#tbinfo tr").eq(i).find("th:last").remove();
} else {
$("#tbinfo tr").eq(i).find("td:last").remove();
}
}
cols = cols - 1;
} for (var i = 0; i < rows; i++) {
if (i == 0) {
total_row = "<th lw-row='" + i + "' lw-col='" + cols + "'>合计</th>";
} else {
total_row = "<td lw-row='" + i + "' lw-col='" + cols + "'>" + getSum($("#tbinfo td[lw-row='" + i + "']:gt(0)")) + "</td>";
}
$("#tbinfo tr").eq(i).append(total_row);
} } function ColSum() {
if ($("#tbinfo tbody tr").size() == 0) {
alert("无数据");
return false;
} var cols = $("#tbinfo tr").find("th").length;
var rows = $("#tbinfo tr").length;
var total_tr = ""; if (total_rows < rows) {
$("#tbinfo tr:last").remove();
rows = rows - 1;
} total_tr = total_tr + "<tr>";
for (var i = 0; i < cols; i++) { if (i == 0) {
total_tr = total_tr + "<td lw-row='" + rows + "' lw-col='" + i + "'>合计</td>";
} else {
total_tr = total_tr + "<td lw-row='" + rows + "' lw-col='" + i + "' >" + getSum($("#tbinfo td[lw-col='" + i + "']")) + "</td>";
}
}
total_tr = total_tr + "</tr>"; $("#tbinfo tbody").append(total_tr);
} function getSum(items) {
var sum = 0;
$.each(items, function (i, n) {
console.log(Number($(n).html()));
sum = sum + Number($(n).html());
});
return sum;
} </script>
</body>
</html>

JSON格式化 动态生成表格 表格转置 行列转换 Excel导出 行求和 列求和的更多相关文章

  1. 跨域jsonp+jQuery+json+html动态生成表格

    1.什么是跨域 浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了. 凡是拥有scr这个属性 ...

  2. .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)

    .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services .Add ...

  3. angular js根据json文件动态生成路由状态

    项目上有一个新需求,就是需要根据json文件动态生成路由状态,查阅了一下资料,现在总结一下发出来: 首先项目用到的是angular的UI-路由,所以必须引入angular.js和angular-ui- ...

  4. Jquery解析Json字符串,并且动态生成数据表格Table

    //ajax获得后台传来的json字符串 $.post("UserInfo.ashx", function (data) { //假设data="{T1:[{User_I ...

  5. js将json数据动态生成表格

    今天开发中遇到需要展示动态数据的问题, 具体要求是后端传来的json字符串,要在前端页面以table表格的形式展示, 其实没啥难的,就是拼接table标签,纯属体力活,于是自己写了个呆萌,保存起来,以 ...

  6. VUE动态生成table表格(element-ui)(新增/删除)

    (直接复制即可测试) 结构(红色部分 data/prop/v-model 数据绑定): <template> <el-table size="small" :da ...

  7. jQuery动态生成Bootstrap表格

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  8. .Net Mvc 返回Json,动态生成EasyUI Tree

    最近做一个项目,开始接触EasyUI,感觉很强大,很适合我这种对前台不是很感冒的人.在学习Tree的过程中,感觉网上的资料挺乱的,很多只是把EasyUI API 抄了一遍.现在把最近这段时间的学到的, ...

  9. jsp页面根据json数据动态生成table

    根据需求由于不同的表要在同一个jsp展示,点击某个表名便显示某张表内容,对于java后台传给jsp页面的json形式的数据是怎么动态生成table的呢? 找了好久,终于找到某位前辈的答案,在此表示衷心 ...

  10. java动态生成带下拉框的Excel导入模板

    在实际开发中,由于业务需要,常常需要进行Excel导入导出操作.以前做一些简单的导入时,先准备一个模板,再进行导入,单有十几. 二十几个导入模板时,往往要做十几.二十几个模板.而且,当在模板中需要有下 ...

随机推荐

  1. IPFS Gateway Selector IPFS下载网关选择工具

    简介 用IPFS作文件分享可以覆盖很多场景, 现在IPFS网关也相当多了, 但是因为国内网络的状况, 不同网关在不同网络运营商的表现差别很大, 导致你提供的下载链接在对方那里可能速度很慢, 甚至无法访 ...

  2. Swoole从入门到入土(22)——多进程[Process]

    Swoole中的Process模块比原生php提供的pcntl模块,提供了更易用的多进程编程接口. 简单总结,Process模块有如下特点: · 可以方便的实现进程间通讯· 支持重定向标准输入和输出, ...

  3. SpringBoot+Shiro+LayUI权限管理系统项目-8.实现日志管理

    1.说明 基于注解和AOP实现的日志管理.只讲解关键部分,详细看源码,文章下方捐赠或QQ联系捐赠获取. 2.功能展示 包括日志搜索.查看详情和批量删除. 3.业务模型 @Data @TableName ...

  4. std::vector<std::string> 与 char** 的转换

    vecotr 容器中插入多条字符串,再将 vector 的地址转换为 char** 代码如下: #include <stdio.h> #include <string> #in ...

  5. 团队协作如何确保项目Node版本的一致性?

    前言 想必大家在工作过程中都遇到过node版本带来的各种各样的问题,对于团队协作项目,你不能保证所有人的本地node版本都相同,所以在项目文档中往往会写上以下内容: 为与线上环境一致,请保证以下版本 ...

  6. Qt三方库开发技术(一):QuaZIP介绍、编译和使用

    前言   Qt使用一些压缩解压功能,探讨过libzip库,zlib库,libzip库比较原始,还有其他库,都比较基础,而在基础库之上,又有高级封装库,Qt中的QuaZIP是一个很好的选择.  本文主要 ...

  7. locals和globals,函数的嵌套,nonlocal,闭包函数及特点以及匿名函数---day11

    1.locals和globals 1.1locals  获取当前作用域中的所有内容 locals 如果在函数外,调用locals(),获取打印的是打印之前的所有变量,返回字典,全局空间作用域 loca ...

  8. 【Azure Developer】使用Key Vault的过程中遇见的AAD 认证错误

    在使用应用程序访问Key Vault获取密钥信息时,现后遇见了多种认证错误.使用的代码为: String keyVaultUrl = "https://test-xxx.vault.azur ...

  9. 隐藏在 Nebula Graph 背后的星辰大海

    本文首发于 Nebula Graph Community 公众号 作者介绍 大家好,我是 Anyzm,graph-ocean(GitHub:https://github.com/nebula-cont ...

  10. 为SQL Server配置连接加密

    前言 很多客户在对数据库做安全审计时要求配置连接加密,本文就如何配置加密以及使用证书做一个系统的整理. 连接加密 首先,连接加密不是透明数据加密,很多人经常把两个概念混淆.连接加密是指客户端程序和SQ ...