有的时候,我们不仅仅需要漂亮的统计图来显示统计结果,还需要在统计图下方一个表格可以更加直观的展现各类数据。既然统计图都显示出来了,那我们可以根据统计图的各元素生成表格了。

  首先,先显示统计图。

  Html----通过一个查询按钮,根据查询条件,查询满足条件的数据,显示到统计图中。

<a onclick="Query();" >查询</a>
<center>
   <div id="chartPro" style="width: 80%"></div>
   <div id="container" style="width:700px;hight:70px"></div>
</center>

  JS------生成统计图,生成表格

      function Query(){
/* 获取查询条件------start------ */
var tradTp=document.getElementById( "tradTp").value;//所属行业
var county=document.getElementById( "county").value;//所属区县
var replDtS=document.getElementById("replDtS").value;//批复时间,开始
var replDtE=document.getElementById("replDtE").value;//批复时间,结束
var radios = document.getElementsByName('type');
var countyRad=radios[0];
var trapTpRad=radios[1];
var chartTp;
if(countyRad.checked==true){
chartTp=countyRad.value;
}
if(trapTpRad.checked==true){
chartTp=trapTpRad.value;
}
/* 获取查询条件------end------ */
$.ajax({
type:"post",
dataType:"json",
data: {"project.tradTp":tradTp,"project.county":county,"project.replDtS":replDtS,"project.replDtE":replDtE,"project.chartTp":chartTp},
async:false,
url : "<%=basePath%>wiassess/projectMgr/projectMgrAction!getProjectChart.action",
success : function(result) {
var jsonData = result;
var xdata = jsonData.xdata; //获取横坐标数组
var data = jsonData.data; //获取显示数据
var titleTm = jsonData.title; //获取标题
var chart = new Highcharts.Chart( //生成统计图表
{
chart : {
renderTo : 'chartPro', //指向要生成图表的div的Id
type : 'column', //柱形图类型
margin : 75, //以下是样式设置
options3d : {
enabled : true,
alpha : 0,
beta : 0,
depth : 50,
viewDistance : 25
}
}, title : {
text : titleTm //显示标题
},
credits : {//不显示highchart超链接
enabled : false
},
plotOptions : {
column : {
depth : 10,
value : 0,
width : 1
} },
yAxis : {
title : {
text : '单位:立方米'
}
},
xAxis : {
categories : xdata
},
tooltip : { //鼠标移至柱形图上提示数据格式
shared : true,
useHTML : true,
headerFormat : '<small>{point.key}</small><table>',
pointFormat : '<tr><td style="color: {series.color}">{series.name}: </td>'
+ '<td style="text-align: right"><b>{point.y} 立方米</b></td></tr>',
footerFormat : '</table>',
valueDecimals : 2
},
series: [{
name:'取水总量',
data: data
}]
});
},
error: function(){
alert('获取失败!');
}
});
//生成表格
HighchartsToTable($("#chartPro"),$("#container"),("(单位:立方米)"));
}

  下面是这篇博客的主题了,生成表格的JS文件chartToTable.js

  

     /**
* 将Highcharts图表数据生成Table表格
* @param div 统计图表的div的Id
* @param table 要生成表格的div的Id
* @param unitName 各个统计图的单位信息
*/
function HighchartsToTable(div,table,unitName) {
//获取图表对象
var chart = div.highcharts();
if (chart != null) {
//获取X轴集合对象
var categories = chart.xAxis[0].categories;
//获取series集合
var seriesList = chart.series;
//获取标题
var title = chart.title.textStr;
//先清空原表格内容
table.html("");
//获取表格div对象
var tableObj = table;
//定义行元素<tr></tr>
var tr;
//定义表格体<table></table>
var tab;
tab = $("<table cellspacing='1' cellpadding='1' width='100%' style=\"border:solid #add9c0; border-width:1px 0px 0px 1px;text-align:center;margin: 2px;\" ></table>")
tab.appendTo(tableObj);
//第一行,放置标题
tr = $("<tr></tr>");
tr.appendTo(tab);
var td = $("<td colspan='" + categories.length + 1 + "' style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\" >" + title +"<b style=\"font-size:14px;font-family:'Times New Roman','Microsoft YaHei';float:right\">"+unitName+"</b>"+ "</td>");
td.appendTo(tr);
//下一行,放置数据
tr = $("<tr ></tr>")
tr.appendTo(tab);
td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\"></td>");
td.appendTo(tr);
for ( var i = 0; i < categories.length; i++) {
td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\">" + categories[i] + "</td>");
td.appendTo(tr);
}
//分批插入数据
for ( var i = 0; i < seriesList.length; i++) {
tr = $("<tr></tr>");
tr.appendTo(tab);
//先加入一个序列名称
td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\">" + seriesList[i].name + "</td>");
td.appendTo(tr);
//遍历数据点追加数据值
for ( var j = 0; j < seriesList[i].data.length; j++) {
td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;align:center\">" + seriesList[i].data[j].y + "</td>");
td.appendTo(tr);
}
}
} else {
alert("获取图表对象失败!");
}
}

  统计图生成表格的大概思路就是,获取统计图上的数据,然后生成一个表格,在表格里遍历获取到的数据。生成的表格的样式可以单独放在style文件里,我这里还没有整理,所以全写在动态生的html里,了解了大概思路,就可以根据具体情况生成你想要的表格了。具体样式如下。(部分有关系统业务的地方打了马赛克,大概看个样子吧,嘻嘻)

  

将Highcharts图表数据生成Table表格的更多相关文章

  1. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  2. jquery 生成table表格 部分代码

    想生成上面这样的table表格先看返回数据格式 <div id="create_img_tab"></div> window.onload = functi ...

  3. php生成table表格

    function getTable($arrTh, $arrTr){ $s = '<table class="tbData">'; $s .= '<tr>' ...

  4. 数据库数据生成Excel表格(多用在导出数据)

    最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...

  5. Java使用poi从数据库读取数据生成Excel表格

    想要使用POI操作以xsl结尾的Excel,首先要下载poi相关的jar包,用到的jar有: poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.j ...

  6. Java导出数据生成Excel表格

    事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...

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

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

  8. python生成html表格

    最近做一个小工具,需要将统计数据生成html表格.在网上搜罗一圈后发现用pandas生成表格非常好用.代码如下: import pandas as pd def convertToHtml(resul ...

  9. jQuery HighchartsTableHTML表格转Highcharts图表插件

    版权申明jQuery HighchartsTable 由 PMSIpilot 创建,中文使用文档由Highcharts中文网发布本文由Theo.红烧鸡翅膀.Mr.Zhang 翻译整理,版权归Highc ...

随机推荐

  1. BZOJ3019 : [Balkan2012]handsome

    首先预处理出$f[i][j][k]$表示长度为$i$的序列,第一个位置是$j$,最后一个位置是$k$时合法的方案数. 从后往前枚举LCP以及那个位置应该改成什么. 用线段树维护区间内最左最右的已经确定 ...

  2. 2D Tookit简单教程

    1. 在Project Window中点击Create > tk2d > Sprite Collection”点击Sprite Collection,创建一个Sprite Collecti ...

  3. POI设置excle单元格样式

    Java利用POI生成Excel强制换行 使用POI创建一个简单的   myXls.xls   文件       常用的包为   org.apache.poi.hssf.usermodel.*;    ...

  4. 详解Paint的setColorFilter(ColorFilter filter)

    一.简介 setColorFilter(ColorFilter filter) 设置颜色过滤,这个方法需要我们传入一个ColorFilter参数同样也会返回一个ColorFilter实例.我们在set ...

  5. .NetCore中EFCore的使用整理

    EntirtyFramework框架是一个轻量级的可扩展版本的流行实体框架数据访问技术. 其中的.NetCore版本对应EntityFrameworkCore Git源代码地址:https://git ...

  6. 细说firewalld和iptables

    在RHEL7里有几种防火墙共存:firewalld.iptables.ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等. fir ...

  7. CCNA实验3.单臂路由器

    拓扑图: 一.交换机配置 通过路由器子接口的方式实现vlan之间的路由. conf t vlan 10 vlan 20 int f0/1 switchport access vlan 10 int f ...

  8. zabbix用户管理

    zabbix用户管理,主要包括用户增删改查.用户报警媒介管理.用户权限管理. 安装完zabbix后,已经自带了两个用户Admin和Guests 超级管理员默认账号:Admin,密码:zabbix,这是 ...

  9. openjudge noi 买房子

    题目链接:http://noi.openjudge.cn/ch0105/16/ 总时间限制: 1000ms 内存限制: 65536kB 描述 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平 ...

  10. 【Android】Android的进程优先级

    android对于所有进程的处理态度都是尽可能不杀死.然而,资源总共就那么多,要是对所有进程都保持宽容的话,资源总会有消耗殆尽的时候.因此,在内存不足的情况,android系统需要根据一定的策略,选择 ...