找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9897

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15523

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-30 18:51  /   查看:4002  /  回复:0
本帖最后由 ClarkPan 于 2018-1-30 18:56 编辑

切片器是SpreadJS V10版本之后新增的功能,是一种筛选表格数据的新方式。SpreadJS V11版本发布了图表功能,切片器可以和图表功能进行联动,已达到更好的可视化展示。接下来让我们一步一步来实现切片器与图表联动,最后达到使用切片器来筛选图表以及表格数据的目的。
环境准备
创建一个HTML文件,添加SpreadJS相关script和css的引用。本示例中我们需要如下方所示来引用相关依赖:
  1. <!DOCTYPE html>
  2.         <html xmlns="http://www.w3.org/1999/xhtml">
  3.         <head>
  4.                 <meta charset="utf-8" />
  5.                 <title>Spread  HTML Page</title>
  6.                 <link href="http://cdn.grapecity.com/spreadjs/hosted/css/gc.spread.sheets.excel2013white.11.0.0.css" rel="stylesheet" />
  7.                 <script src="http://cdn.grapecity.com/spreadjs/hosted/scripts/gc.spread.sheets.all.11.0.0.min.js" type="text/javascript"></script>
  8.                 <script src="http://cdn.grapecity.com/spreadjs/hosted/scripts/plugins/gc.spread.sheets.charts.11.0.0.min.js" type="text/javascript"></script>
  9.         </head>
  10.         <body>
  11.         </body>
  12. </html>
复制代码

之后添加用来承载SpreadJS的div元素。
  1. <body> <div id="ss" style="position: absolute; width: 98%; height: 80%; border: 1px solid gray;"></div> </body>
复制代码
数据源的加载
本示例中绘制图表以及创建表格的数据源是存放于js中,所以需要进行引用
  1. <script src="./data/data.js" type="text/javascript"></script>
复制代码

SpreadJS初始化
接下来在js代码中初始化SpreadJS
  1. var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 1 });
  2. var activeSheet = spread.getActiveSheet();
复制代码

创建表格
  1. sheet.suspendPaint();
  2. sheet.name("State  Resident Population 2016");
  3. sheet.setRowCount(69);
  4. sheet.setColumnCount(17);
  5. // Create the  table and set the array as the data sourcesheet.tables.add("table1", 16, 0,  data.length, data[0].length);
  6. sheet.setArray(16, 0, data);
  7. // Set decimal  places to 0
  8. for (var r = 16;  r <= 67; r++) {
  9.       for (var c = 1; c  <= 3; c++) {
  10.             sheet.getCell(r, c).formatter('#');   
  11.       }
  12. }
  13. sheet.resumePaint();
复制代码

添加切片器
  1. // Add a  slicer for the table to filter by "State"
  2. var slicer1 = sheet.slicers.add("slicer1", "table1", "State");
  3. slicer1.position(new GC.Spread.Sheets.Point(830, 25));
  4. // Show  the data items in their original positions
  5. slicer1.showNoDataItemsInLast(false);
复制代码


添加图表
  1. function initChart(sheet) {
  2.       // Add the  chart
  3.       var chart = sheet.charts.add('Chart1', GC.Spread.Sheets.Charts.ChartType.columnClustered, 0, 5, 800,  300, "table1[#all]");
  4.       chart.title({ text: "State Resident Population 2016", color: "darkblue", fontSize: "17pt" });
  5. }
复制代码

注意这里需要用table1[#all]这样的方式来将表头添加到Chart中

这样就完成了,通过切片器的筛选,可以图表上也可以动态的反应其变化。
完整demo的下载请见附件。


figure.png
figure2.png
figure3.png

spreadjs-chart-slicers-sample.zip

43.29 KB, 下载次数: 50

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部