首页 > 其他分享 >每周一个报表小技巧:如何在报表中引入数据筛选功能

每周一个报表小技巧:如何在报表中引入数据筛选功能

时间:2023-06-21 10:57:09浏览次数:43  
标签:文件 sheet 报表 每周 引入 new 筛选 数据

每周一个报表小技巧:如何在报表中引入数据筛选功能

摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言篇

在当今信息爆炸的时代,面对海量的数据,我们常常需要从中提取有价值的信息,做出更好的决策。而数据筛选,正是一种可以帮助我们在众多信息中快速找到所需的内容的方法。通过使用数据筛选工具,可以轻松地筛选出特定条件下的数据,对数据进行过滤和排序以便更好地分析和认识数据。数据筛选不仅是一种有效管理大量信息的手段,也是现代数据处理技术的核心。在大数据时代,了解和熟练掌握数据筛选技巧将有助于帮助更好地理解并使用所拥有的数据资源。今天小编就为大家介绍如何使用JavaScript在报表中引入数据筛选的功能。

本文使用软件Visual Studio Code(以下简称“VSCode”)作为编程环境,请您以管理员身份运行它。

本文目录:

1.Demo介绍篇

2.代码篇:

2.1创建工程文件并引入资源

2.2引入JS文件

2.3引入CSS文件

2.4引入Html文件

2.5运行代码

3.更多资源篇

3.1完整代码资源

3.2更多表格插件Demo

1.Demo介绍篇

上图是表格数据筛选Demo的运行页面,页面中一共有五列数据,分别是销售员姓名、出生日期、销售区域、该销售员的销售总金额、销售月金额和销售比例,每列下包含10行数据信息。

现有如下的两个需求:

  1. 想要查看销售区域是North的销售员信息和销售量情况。
  2. 只想在页面上根据年龄筛选数据。

解决方法:1.点击Region表格的下拉框,选择North选项,再点击确定,查询出来的数据就是只包含North的信息了。

2.只选择右边选项栏中的Birth(出生日期)勾选框,这样就只能筛选出生日期的信息了。

以上就是对于表格筛选功能的简单介绍,下面介绍如何使使用JavaScript编写这个Demo。

2.代码篇

2.1创建工程文件并引入资源

第一步在文件管理器中创建一个空白的文件夹作为工程并用VSCode打开。

第二步在工程中新建两个文件夹用来存放JS文件和CSS文件。

第三步引入需要的JS文件和CSS文件。(完整的代码在更多资源的源码链接中)。

至此已经完成了创建工程并引入资源的步骤,下面介绍JS的编写。

2.2引入JS文件

第一步在JS文件夹中新建一个.JS文件,名称任意起即可。

第二步在JS文件中引入需要的JavaScript方法:

1.设置页面中需要的数据和初始化方法。

//设置数据

var salesData = [

["SalesPers", "Birth", "Region", "SaleAmt", "ComPct", "ComAmt"],

["Joe", new Date("2000/01/23"), "North", 260, 0.1, 26],

["Robert", new Date("1988/08/21"), "South", 660, 0.15, 99],

["Michelle", new Date("1995/08/03"), "East", 940, 0.15, 141],

["Erich", new Date("1994/05/23"), "West", 410, 0.12, 49.2],

["Dafna", new Date("1992/07/21"), "North", 800, 0.15, 120],

["Rob", new Date("1995/11/03"), "South", 900, 0.15, 135],

["Jonason", new Date("1987/02/11"), "West", 300, 0.17, 110],

["Enana", new Date("1997/04/01"), "West", 310, 0.16, 99.2],

["Dania", new Date("1997/02/15"), "North", 500, 0.10, 76],

["Robin", new Date("1991/12/28"), "East", 450, 0.18, 35]];

//页面加载

window.onload = function () {

tableColumnsContainer = _getElementById("tableColumnsContainer");

//设置

var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), {sheetCount: 1});

//初始化方法

initSpread(spread);

};

2.编辑initSpread方法:

(1):添加数据筛选的条件。

var sheet = spread.getSheet(0);

sheet.suspendPaint();

//设置表格是否可以溢出

sheet.options.allowCellOverflow = true;

sheet.name("FilterDialog");

sheet.setArray(1, 1, salesData);

//添加数据筛选

var filter = new spreadNS.Filter.HideRowFilter(new spreadNS.Range(2, 1, salesData.length - 1, salesData[0].length));

sheet.rowFilter(filter);

//选择想要筛选的数据

prepareFilterItems(sheet, salesData[0]);

sheet.defaults.rowHeight = 28;

sheet.setColumnWidth(1, 110);

sheet.setColumnWidth(2, 80);

sheet.setColumnWidth(3, 100);

sheet.setColumnWidth(4, 80);

sheet.setColumnWidth(5, 80);

sheet.setColumnWidth(6, 80);

sheet.getRange(2, 2, 10, 1).formatter("yyyy/mm/dd");

sheet.resumePaint();

(2)选择筛选数据选项的方法。

//选择想要展示的数据筛选项

function prepareFilterItems(sheet, headers) {

var items = [];

var filter = sheet.rowFilter(),

range = filter.range,

startColumn = range.col;

//循环遍历想要获取的数据

for (var c = 0, length = headers.length; c < length; c++) {

var name = headers[c];

items.push('<div><label><input type="checkbox" checked data-index="' + (startColumn + c) + '">'+ name + '</label></div>');

}

tableColumnsContainer.innerHTML = items.join("");

var nodeList = tableColumnsContainer.querySelectorAll("input[type='checkbox']");

checkBoxes = [];

for (var i = 0, count = nodeList.length; i < count; i++) {

var element = nodeList[i];

checkBoxes.push(element);

//添加监听事件

element.addEventListener('change', function () {

var index = +this.dataset.index; // +this.getAttribute("data-index");

//判断是否显示筛选条件和筛选后的数据信息

if (filter) {

filter.filterButtonVisible(index, this.checked);

	}

	});

	}

}

(3)显示所有筛选条件和隐藏所有筛选条件的方法。

//显示筛选条件

_getElementById("showAll").addEventListener('click',function () {

if (filter) {

filter.filterButtonVisible(true);

checkBoxes.forEach(function(item) {

item.checked = true;

});

}

});

//隐藏筛选条件

_getElementById("hideAll").addEventListener('click',function () {

if (filter) {

filter.filterButtonVisible(false);

checkBoxes.forEach(function(item) {

item.checked = false;

});

}

});

(4)获取元素的方法。

//获取元素的方法

function _getElementById(id){

return document.getElementById(id);

}

至此已经完成了JS文件的引入,下面介绍CSS的编写。

2.3引入CSS文件

第一步在CSS文件夹中新建一个.CSS文件,名称任意起即可。

第二步编写的CSS样式:

.sample-tutorial {

position: relative;

height: 100%;

overflow: hidden;

}

.sample-spreadsheets {

width: calc(100% - 280px);

height: 100%;

overflow: hidden;

float: left;

}

.options-container {

float: right;

width: 280px;

padding: 12px;

height: 100%;

box-sizing: border-box;

background: #fbfbfb;

overflow: auto;

}

.option-group {

margin-bottom: 6px;

}

.option-group input[type="checkbox"] {

margin-right: 6px;

}

body {

position: absolute;

top: 0;

bottom: 0;

left: 0;

right: 0;

}

#ss {

height: 98vh;

float: left;

width: 85%;

/* left: auto; */

}

至此已经完成了CSS文件的引入,下面介绍Html文件的编写。

2.4引入Html文件

第一步在工程文件中创建一个.Html文件,名称任意起即可。

第二步在Html文件中导入JS文件资源,主要用到的是迷你图组件(点击这里可以了解其他组件资源)。

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="spreadjs culture" content="zh-cn" />

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>数据筛选</title>

<!-- 引入SpreadJS相关的CSS,默认会有一个CSS

SpreadJS默认提供了7种CSS,可以选择一个适合当前项目的引入

-->

<link rel="stylesheet" type="text/css" href="./css/gc.spread.sheets.excel2013white.15.1.0.css" />

<!-- 核心资源,最小依赖资源,只要引入了该资源,组件运行时就能显示出来 -->

<script type="text/javascript" src="./js/gc.spread.sheets.all.15.1.0.min.js"></script>

<!-- 中文资源文件,组件运行时默认会用英文资源,使用中文资源需要引入并设置 -->

<script type="text/javascript" src="./js/gc.spread.sheets.resources.zh.15.1.0.min.js"></script>

<!-- 形状相关资源-->

<script type="text/javascript" src="./js/gc.spread.sheets.shapes.15.1.0.min.js"></script>

<!-- 透视表相关资源 -->

<script type="text/javascript" src="./js/gc.spread.pivot.pivottables.15.1.0.min.js"></script>

<!-- 图表的相关资源 -->

<script type="text/javascript" src="./js/gc.spread.sheets.charts.15.1.0.min.js"></script>

<!-- 二维码相关资源 -->

<script type="text/javascript" src="./js/gc.spread.sheets.barcode.15.1.0.min.js"></script>

<!-- 打印相关资源 -->

<script type="text/javascript" src="./js/gc.spread.sheets.print.15.1.0.min.js"></script>

<!-- PDF相关资源 -->

<script type="text/javascript" src="./js/gc.spread.sheets.pdf.15.1.0.min.js"></script>

<!-- 集算表相关资源 集算表是SpreadJS特有的功能 -->

<script type="text/javascript" src="./js/gc.spread.sheets.tablesheet.15.1.0.min.js"></script>

</style>

</head>

第三步编写表格和筛选栏的格式。

<body>

<div class="sample-tutorial">

<!--显示表格-->

<div id="ss" class="sample-spreadsheets"></div>

<div class="options-container">

<div class="option-group">

<!--显示所有的筛选条件-->

<input id="showAll" type="button" value="Show All" title="Show all filter buttons of the table"/>

<!--隐藏所有的筛选条件-->

<input id="hideAll" type="button" value="Hide All" title="Hide all filter buttons of the table"/>

</div>

<div class="option-group">

<h4>Show filter buttons:</h4>

<div id="tableColumnsContainer"></div>

</div>

</div>

</div>

</body>

第四步引入JS文件和CSS文件(注意SRC和HREF中的文件名必须和第二步与第三步中起的文件名一致,否则会导致引入失败)。

<head>

<script src="js/rowFilter.js" type="text/javascript"></script>

<link rel="stylesheet" type="text/css" href="css/rowFilter.css">

</head>

至此已经完成了Html文件的引入。

2.5运行代码

在运行前需要下载并安装一个插件:Live Server。

(Live Server插件)

安装完插件后需要重启VSCode软件,然后在Html文件中右键点击Open With The Live Server(以浏览器打开)便可运行。

3.更多资源篇

3.1完整代码资源

https://github.com/GrapeCityXA/SpreadJS-rowFilter/tree/main (Github)

https://gitee.com/GrapeCity/spread-js-row-filter (Gitee)

3.2更多表格插件Demo

除了JavaScript的使用,还可以在流行的框架如Vue、React中引入数据筛选功能,不仅如此,还可实现许多花样操作,如数据绑定单元格透视等,让表格更具交互性和易用性。

标签:文件,sheet,报表,每周,引入,new,筛选,数据
From: https://www.cnblogs.com/powertoolsteam/p/17485948.html

相关文章

  • labview最小二乘法拟合曲线报表生成,波形拟合最小二乘法 Lab
    labview最小二乘法拟合曲线报表生成,波形拟合最小二乘法LabVIEW是一种流程图编程语言和开发环境,用于控制和测量系统的自动化。最小二乘法是一种数学优化技术,用于拟合数据点到一个函数曲线上。在LabVIEW中,可以使用最小二乘法来生成报表和进行波形拟合。最小二乘法是一种通过最小化数......
  • 高效处理报表,掌握原生JS打印和导出报表为PDF的顺畅技巧!
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言篇在日常工作中,报表打印和导出为PDF是经常要处理的任务之一。除了方便我们将信息传达给同事和客户外,还可以让工作看起来更加专业、漂......
  • bi报表软件开发的特点什么,产品和流程?
    BI报表软件是一种针对企业数据分析和决策支持的工具,具有高度灵活性和易用性。在当前数据化的时代,越来越多的企业开始关注BI报表软件的开发和应用,因为它们可以帮助企业更好地管理数据,更好地进行商业决策。本文将从BI报表软件开发的特点、产品和流程三个方面入手,详细说明BI报表软件的......
  • bi报表软件开发的特点什么,产品和流程?
    BI报表软件是一种针对企业数据分析和决策支持的工具,具有高度灵活性和易用性。在当前数据化的时代,越来越多的企业开始关注BI报表软件的开发和应用,因为它们可以帮助企业更好地管理数据,更好地进行商业决策。本文将从BI报表软件开发的特点、产品和流程三个方面入手,详细说明BI报表软件......
  • 注解的使用(二):插桩,编译后处理筛选
    什么是插桩?插桩就是将一段代码插入或者替换原本的代码。字节码插桩顾名思义就是在我们编写的源码编译成字节码(Class)后,在Android下生成dex之前修改Class文件,修改或者增强原有代码逻辑的操作。QQ空间曾经发布的《热修复解决方案》中利用Javaassist库实现向类的构造函数中插入一段代......
  • 课程设计工作日报表6/18
    课程设计工作日报表时间:2023年  6月18日序号工作分类工作任务完成情况待解决问题解决方法备注1平衡二叉树的根将给定的一系列数字插入初始为空的AVL树,请你输出最后生成的AVL树的根结点的值。对于给定一系列数字,插入初始为空的AVL树,可......
  • java中 如何在文本中筛选出汉字
    在Java中,使用正则表达式来筛选出文本中的汉字。下面是一种方法:importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassMain{publicstaticvoidmain(String[]args){Stringtext="Hello你好!Thisisatest文本。";//使......
  • java中 如何在文本中筛选出汉字
    在Java中,使用正则表达式来筛选出文本中的汉字。下面是一种方法:importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassMain{publicstaticvoidmain(String[]args){Stringtext="Hello你好!Thisisatest文本。";//使......
  • java中 如何在文本中筛选出汉字
    在Java中,使用正则表达式来筛选出文本中的汉字。下面是一种方法:importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassMain{publicstaticvoidmain(String[]args){Stringtext="Hello你好!Thisisatest文本。";/......
  • java中 如何在文本中筛选出汉字
    在Java中,使用正则表达式来筛选出文本中的汉字。下面是一种方法:importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassMain{publicstaticvoidmain(String[]args){Stringtext="Hello你好!Thisisatest文本。";/......