数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(2)

简介: 数据透视表上线!如何在纯前端实现这个强大的数据分析功能?

在前端集成数据透视表:简要教程

使用SpreadJS,要建立一个如图所示的前端嵌入式数据透视表是非常简单的:

image.png

上图中的PivotLayout工作簿是数据透视表的页面,DataSource是原始数据页面,图右侧的面板就是SpreadJS生成的数据透视面板,用户可以在这里调整所需的字段,从而改变左侧数据透视表的展示信息。

在数据透视表中,存在四个区域:

  • Filters: 控制数据透视表的数据范围。
  • Columns: 控制数据透视表的列分布。
  • Rows: 控制数据透视表的行分布。
  • Values: 控制数据透视表的计算数据和计算方法。

输入以下代码即可创建数据透视表面板:

let panel = new GC.Spread.Pivot.PivotPanel("myPivotPanel", myPivotTable, document.getElementById("panel"));

用户必须为"panel"元素设置宽和高 。

GC.Spread.Pivot.PivotPanel构造函数参数如下:

image.png

以下是使用标准JS代码嵌入数据透视表的app.js文件:

window.onload = function () {
    var spread = new GC.Spread.Sheets.Workbook(_getElementById('ss'), 
{ sheetCount: 2 });
    initSpread(spread);
    var pivotLayoutSheet = spread.getSheet(0);
    initPivotTable(pivotLayoutSheet);
};
function initSpread(spread) {
    spread.suspendPaint();
    let sheet = spread.getSheet(1);
    sheet.name("DataSource");
    sheet.setRowCount(117);
    sheet.setColumnWidth(0, 120);
    sheet.getCell(-1, 0).formatter("YYYY-mm-DD");
    sheet.getRange(-1,4,0,2).formatter("$ #,##0");
    sheet.setArray(0, 0, pivotSales);
    let table = sheet.tables.add('tableSales', 0, 0, 117, 6);
    for(let i=2;i<=117;i++)
    {
      sheet.setFormula(i-1,5,'=D'+i+'*E'+i)
    }
    table.style(GC.Spread.Sheets.Tables.TableThemes["none"]);
    let sheet0 = spread.getSheet(0);
    sheet0.name("PivotLayout");
    spread.resumePaint();
}
function initPivotTable(sheet) {
    let myPivotTable = sheet.pivotTables.add("myPivotTable", "tableSales", 1, 1, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.light8);
    myPivotTable.suspendLayout();
    myPivotTable.options.showRowHeader = true;
    myPivotTable.options.showColumnHeader = true;
    myPivotTable.add("salesperson", "Salesperson", GC.Spread.Pivot.PivotTableFieldType.rowField);
    myPivotTable.add("car", "Cars", GC.Spread.Pivot.PivotTableFieldType.rowField);
    myPivotTable.add("date", "Date", GC.Spread.Pivot.PivotTableFieldType.columnField);
let groupInfo = { originFieldName: "date", dateGroups: [{ by: GC.Pivot.DateGroupType.quarters }] };
    myPivotTable.group(groupInfo);
    myPivotTable.add("total", "Totals", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
    var panel = new GC.Spread.Pivot.PivotPanel("myPivotPanel", myPivotTable, document.getElementById("panel"));
    panel.sectionVisibility(GC.Spread.Pivot.PivotPanelSection.fields + GC.Spread.Pivot.PivotPanelSection.area);
    myPivotTable.resumeLayout();
    myPivotTable.autoFitColumn();
}
function _getElementById(id) {
    return document.getElementById(id);
}

对应的html页面中加入的插件代码:

<head>
    <meta name="spreadjs culture" content="zh-cn" />
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" type="text/css" href="https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/zh/purejs/node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
    <script src="https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/zh/purejs/node_modules/@grapecity/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script>
    <script src="https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/zh/purejs/node_modules/@grapecity/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js" type="text/javascript"></script>
    <script src="https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/zh/purejs/node_modules/@grapecity/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js" type="text/javascript"></script>
    <script src="https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/data/pivot-data.js" type="text/javascript"></script>
    <script src="https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/zh/purejs/node_modules/@grapecity/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js" type="text/javascript"></script>
    <script src="https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/js/license.js" type="text/javascript"></script>
    <script src="app.js" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>

可以看到,总共60行左右的代码即可在一个web页面中嵌入数据透视表和透视表控制面板。

SpreadJS除了支持标准JS代码外,还支持Angular、Vue和React框架。使用Angular时需要单独创建一个app.component.html页面,Vue和React的app文件代码也会更长一些,并且要把插件导入的代码段放在app文件中。

此外,数据透视表面板只是一个控制数据透视表的工具,它在使用fromJSON时会自动释放。 数据透视表可以在没有数据透视表面板的情况下工作。所以数据透视表支持下面的api来处理面板和数据透视表之间的关系。

将数据透视面板附加到数据透视表:

///* function attach(pivotTable: GC.Spread.Pivot.PivotTable) :void

/**

* @description this function will attach to a pivot table

* @param pivotTable

* @returns void

*/

attach (pivotTable: IPivotTable): void

从数据透视表中分离数据透视面板:

///* function attach(): void

/**

* @description this function will detach to a pivot table

* @returns void

*/

detach (): void

销毁数据透视表面板:

///* function destroy (): void

/**

* @description destroy PivotPanel

*/

destroy (): void

除了透视表,你的前端还能做到这些

SpreadJS的强大并非止于数据透视表。SpreadJS是葡萄城结合40余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件,发展到今天功能已成为功能足以与Excel相媲美的在线表格控件。SpreadJS在界面和功能上与Excel高度类似,可以为企业信息化系统提供 表格文档协同编辑、数据填报和类Excel报表设计的应用场景支持。使用SpreadJS可直接在Angular、React、Vue等前端框架中实现高效的模板设计、在线编辑和数据绑定等功能,为最终用户提供高度类似Excel的使用体验。

SpreadJS使用时无需预装任何插件或第三方组件,具备流畅的交互体验,并可直接在浏览器内导入导出Excel、CSV、JSON等文件。SpreadJS兼容数百种Excel计算公式,内置18种条件格式、32种图表、53项单元格格式和182种形状,且支持触摸操作,具备纯中文界面。

值得一提的是,SpreadJS在构建界面时并没有采取传统的DOM拼接方式,而是使用HTML5 Canvas 绘制技术,在提升性能的同时打破了DOM元素渲染对UI的诸多限制,实现了更精准的UI界面渲染效果。该技术已获得国家知识产权局颁发的发明专利证书。

在最新的SpreadJS 15.0 Update 1版本中,还加入了跨工作簿公式函数支持、日期切片器、Vue3框架支持等更新内容。随着SpreadJS的不断更新和发展,这款工具已经成为现代企业在各类业务场景中实现在线Excel功能、随时随地满足数据处理、分析和展示需求的最佳选项之一。点击以下链接可进一步了解SpreadJS的强大能力,早日提升企业数据生产力。

前端表格数据透视表在线示例:

https://demo.grapecity.com.cn...

葡萄城前端表格控件SpreadJS

https://www.grapecity.com.cn/...

类Excel全栈解决方案:https://www.grapecity.com.cn/...

相关文章
|
存储 前端开发 安全
前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
本文全面解析前端三种数据存储方式:Cookie、LocalStorage与SessionStorage。涵盖其定义、使用方法、生命周期、优缺点及典型应用场景,帮助开发者根据登录状态、用户偏好、会话控制等需求,选择合适的存储方案,提升Web应用的性能与安全性。(238字)
439 0
|
4月前
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
11月前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
342 71
|
3月前
|
SQL 数据挖掘 BI
数据分析的尽头,是跳出数据看数据!
当前许多企业在数据分析上投入大量资源,却常陷入“数据越看越细,业务越看越虚”的困境。报表繁杂、指标众多,但决策难、行动少,分析流于形式。真正有价值的数据分析,不在于图表多漂亮,而在于能否带来洞察、推动决策、指导行动。本文探讨如何跳出数据、回归业务场景,实现数据驱动的有效落地。
|
8月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
460 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
9月前
|
SQL 人工智能 数据可视化
数据团队必读:智能数据分析文档(DataV Note)五种高效工作模式
数据项目复杂,涉及代码、数据、运行环境等多部分。随着AI发展,数据科学团队面临挑战。协作式数据文档(如阿里云DataV Note)成为提升效率的关键工具。它支持跨角色协同、异构数据处理、多语言分析及高效沟通,帮助创建知识库,实现可重现的数据科学过程,并通过一键分享报告促进数据驱动决策。未来,大模型AI将进一步增强其功能,如智能绘图、总结探索、NLP2SQL/Python和AutoReport,为数据分析带来更多可能。
558 142
|
7月前
|
存储 前端开发 JavaScript
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
本方案基于DeepSeek API增强版,提供纯前端实现的文件上传与内容解析功能。通过HTML和JavaScript,用户可选择文件并调用API完成上传及解析操作。方案支持多种文件格式(如PDF、TXT、DOCX),具备简化架构、提高响应速度和增强安全性等优势。示例代码展示了文件上传、内容解析及结果展示的完整流程,适合快速构建高效Web应用。开发者可根据需求扩展功能,满足多样化场景要求。
2520 64
|
10月前
|
SQL 数据可视化 大数据
从数据小白到大数据达人:一步步成为数据分析专家
从数据小白到大数据达人:一步步成为数据分析专家
573 92
|
8月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
11月前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
460 73

热门文章

最新文章