找回密码
 立即注册

QQ登录

只需一步,快速开始

Lynn.Dou 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-15 17:24  /   查看:2121  /  回复:0
V15.1中SpreadJS数据透视表新增了日期切片器,通过方便的图形界面,可轻松筛选出数据透视表数据。
日期切片器界面介绍:
222.png149943846.png

选择日期区间标签:通过文本描述当前日期的筛选条件
时间级别:单击显示时间级别下拉菜单,并可选择时间线的级别。
image.png335659484.png
筛选按钮:点击即清空筛选条件,默认显示所有期间 image.png721653136.png
已选中日期区域:仅支持一个连续的日期范围
可参看文末动图,了解数据透视表日期切片器的筛选能力。

使用日期切片器


1、创建一个名为“pt”的数据透视表(initPivotTable方法完整代码见文末)
  1. var spread = GC.Spread.Sheets.findControl(document.getElementById('ss'));
  2.     var sheet = spread.getActiveSheet();
  3.     initPivotTable();
复制代码


2、将日期切片器添加到“name”字段
  1. var timeline_date = sheet.slicers.add("timeline_date", pt.name(), "date", GC.Spread.Sheets.Slicers.TimelineStyles.light1(), GC.Spread.Sheets.Slicers.SlicerType.pivotTimeline);
复制代码


3、控制日期切片器的属性显示
如:不显示水平滚动条
  1. timeline_date.showHorizontalScrollbar(false);
复制代码
让时间线滚动至某一天
  1. timeline_date.scrollPosition(new Date('2021-6-23'));
复制代码
设置时间级别为年
  1. timeline_date.level(GC.Spread.Sheets.Slicers.TimelineLevel.years);
复制代码

至此即可创建一个日期切片器:
image.png669989928.png

注:initPivotTable方法完整代码如下:
  1. function initPivotTable () {
  2.     var dataSource = [
  3.         [ "name", "product", "date", "amount", "price", "sales" ],
  4.         [ "chris", "desk", new Date("2020-10-08T16:00:00.000Z"), 5, 199, 995 ],
  5.         [ "radow", "pen", new Date("2020-09-15T16:00:00.000Z"), 2, 5, 10 ],
  6.         [ "peyton", "pencil", new Date("2021-06-22T16:00:00.000Z"), 6, 1.5, 9 ],
  7.         [ "johnson", "chair", new Date("2021-07-19T16:00:00.000Z"), 7, 68, 476 ],
  8.         [ "vic", "notebook", new Date("2021-01-13T16:00:00.000Z"), 7, 3.2, 22.4 ],
  9.         [ "lan", "desk", new Date("2021-03-12T16:00:00.000Z"), 9, 199, 1791 ],
  10.         [ "chris", "pen", new Date("2021-03-06T16:00:00.000Z"), 4, 5, 20 ],
  11.         [ "chris", "pencil", new Date("2020-09-02T16:00:00.000Z"), 10, 1.5, 15 ],
  12.         [ "radow", "chair", new Date("2020-08-09T16:00:00.000Z"), 3, 68, 204 ],
  13.         [ "peyton", "notebook", new Date("2021-02-08T16:00:00.000Z"), 9, 3.2, 28.8 ],
  14.         [ "johnson", "desk", new Date("2021-07-03T16:00:00.000Z"), 7, 199, 1393],
  15.         [ "vic", "pen", new Date("2021-06-27T16:00:00.000Z"), 8, 5, 40],
  16.         [ "lan", "pencil", new Date("2020-10-10T16:00:00.000Z"), 2, 1.5, 3],
  17.         [ "chris", "chair", new Date("2021-03-04T16:00:00.000Z"), 2, 68, 136],
  18.         [ "chris", "notebook", new Date("2021-02-21T16:00:00.000Z"), 11, 3.2, 35.2],
  19.         [ "radow", "desk", new Date("2021-06-03T16:00:00.000Z"), 6, 199, 1194]
  20.     ];
  21.     var sourceSheet = spread.sheets[0];
  22.     sourceSheet.setArray(0, 0, dataSource);
  23.     sourceSheet.tables.add("table1", 0, 0, 17, 6);
  24.     spread.sheets[0].name("sourceSheet");

  25.     var pivotSheet = new GC.Spread.Sheets.Worksheet('pivotTable1');
  26.     pivotSheet.setRowCount(2000);
  27.     pivotSheet.setColumnCount(30);
  28.     spread.addSheet(1, pivotSheet);

  29.     var pt = pivotSheet.pivotTables.add("pivotTable1", "table1", 1, 1, GC.Spread.Pivot.PivotTableLayoutType.compact, GC.Spread.Pivot.PivotTableThemes.medium1, null);
  30.     pt.suspendLayout();
  31.     pt.add("name", "name", GC.Spread.Pivot.PivotTableFieldType.rowField);
  32.     pt.add("product", "product", GC.Spread.Pivot.PivotTableFieldType.rowField);
  33.     pt.group({
  34.         originFieldName: 'date',
  35.         dateGroups: [
  36.             {
  37.                 by: GC.Pivot.DateGroupType.years
  38.             },
  39.             {
  40.                 by: GC.Pivot.DateGroupType.quarters
  41.             },
  42.             {
  43.                 by: GC.Pivot.DateGroupType.months
  44.             },
  45.         ]
  46.     });
  47.     pt.add("date", "date", GC.Spread.Pivot.PivotTableFieldType.columnField);
  48.     pt.add("sales", "sales", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
  49.     pt.resumeLayout();
  50.     pt.autoFitColumn();
  51.     spread.setActiveSheet("pivotTable1");
  52. }
复制代码





a.gif

0 个回复

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