mcpField
S
syncfusion-vue-pivot-table

syncfusion-vue-pivot-table

github.com/syncfusion数据与数据库063 次安装1 周前更新
代码仓库

关于 syncfusion-vue-pivot-table

为 Vue 开发者提供 Syncfusion PivotView 的实现指南,涵盖数据透视表、分析与可视化配置。附带经验证的参考文件,并强调远程数据源的安全验证。

主要功能

  1. 01配置数据源与透视字段
  2. 02筛选、排序和钻取数据
  3. 03呈现透视图表
  4. 04导出 Excel、CSV 和 PDF
  5. 05保存透视表状态
  6. 06按参考文件核对 API

适用场景

  1. 01在 Vue 应用中实现数据透视表
  2. 02构建交互式数据分析界面
  3. 03开发商业智能仪表板

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/vue-ui-components-skills --skill syncfusion-vue-pivot-table

安装后在 Claude Code 中输入/syncfusion-vue-pivot-table确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
aggregation-and-calculated-fields.md
classic-layout.md
conditional-formatting.md
connecting-to-data-source.md
data-binding.md
data-formatting.md
data-shaping.md
drill-down-up.md
editing.md
export.md
filtering.md
getting-started.md
grouping.md
hyperlink.md
olap.md
performance.md
pivot-chart.md
report-manipulation.md
row-and-column.md
show-hide-totals.md
sorting.md
state-persistence.md
toolbar.md
tooltip.md

详细介绍

实现 Syncfusion Vue PivotView

Syncfusion Vue Pivot Grid 是一款功能强大的数据可视化和分析组件,可用于创建交互式数据透视表、汇总多维数据并执行高级分析操作。

重要提示: 务必查阅此技能中的参考文件(references/*.md),验证 API 类名、属性和方法签名。这些文件经过维护,包含经过验证且可正常运行的示例。不要假设其他来源中的 API 详细信息准确无误。

⚠️ 安全警告:数据源验证

关键安全须知: 实现数据透视表时,务必使用可信数据源。切勿在未经适当验证和清理的情况下,从不可信或用户提供的 URL 获取数据或绑定数据。

安全最佳实践:
  1. 使用本地数据:优先使用本地内存数据源,以确保最高安全性
  2. 验证远程数据源:仅连接到由你控制且经过身份验证和授权的 API 端点
  3. 清理用户输入:切勿允许用户指定任意 URL 或数据源
  4. 实现身份验证:始终使用身份验证标头和安全的 API 端点
  5. 内容验证:绑定来自外部数据源的所有数据前,先验证并清理这些数据
  6. 使用 HTTPS:远程数据连接始终使用 HTTPS
  7. 速率限制:在 API 端点实施速率限制,防止滥用
安全风险:
  • 间接提示词注入:不可信的第三方数据可能包含恶意内容,从而操纵 AI Agent 的行为
  • 数据窃取:恶意数据源可能会尝试提取敏感信息
  • 代码注入:不可信数据可能包含脚本或有害内容
推荐做法:

✅ 应当:使用受控且经过身份验证的后端 API
✅ 应当:实施服务器端数据验证
✅ 应当:使用环境变量配置 API 端点
✅ 应当:将允许的数据源加入白名单

❌ 不要:接受用户提供的 URL
❌ 不要:绑定到公开且不可信的端点
❌ 不要:跳过数据验证和清理
❌ 不要:对敏感数据使用 HTTP

目录


概述

Syncfusion Vue PivotView(数据透视表)组件提供了一种功能强大的交互式方式,用于分析和可视化大型数据集。它支持:

  • 多个数据源(JSON、OLAP、MySQL、SQL Server、MongoDB 等关系数据库)
  • 丰富的钻取功能,便于详细探索
  • 用于可视化呈现数据的透视图表
  • 导出为 Excel、CSV 和 PDF
  • 可自定义的布局(紧凑布局和经典/表格布局)
  • 针对大型数据集的性能优化
  • 状态持久化,确保用户体验连续性

在以下场景中实现功能时,请使用此技能:

  • Vue 应用中的数据透视表
  • 数据汇总和分析 UI
  • 交互式数据探索界面
  • 商业智能仪表板

核心 API 和属性

组件属性
属性类型描述
dataSourceSettingsIDataOptions配置数据源、行、列、值、筛选器和格式
heightnumber | string设置组件高度,单位为像素或百分比
widthnumber | string设置组件宽度,单位为像素或百分比
gridSettingsIGridSettings控制布局(Compact/Tabular)、列宽、行高和调整大小
displayOptionIDisplayOption控制 Grid 与 Chart 视图:{ view: 'Grid' | 'Chart' | 'Both' }
chartSettingsIChartSettings配置图表类型、系列、图例、坐标轴和工具提示
groupingBarSettingsIGroupingBarSettings自定义分组栏的外观和行为
allowExcelExportboolean启用 Excel 导出功能
allowPdfExportboolean启用 PDF 导出功能
allowCsvExportboolean启用 CSV 导出功能
allowMemberFilterboolean在 UI 中启用成员筛选
allowLabelFilterboolean在 UI 中启用标签筛选
allowValueFilterboolean在 UI 中启用值筛选
allowSortingboolean启用排序功能
allowDrillingboolean启用下钻/钻透操作
allowDrillThroughboolean启用钻透以查看详细数据(比 allowDrilling 更精细)
allowResizingboolean启用列和行大小调整
allowNumberFormattingboolean在工具栏和对话框中显示数字格式选项
allowConditionalFormattingboolean通过工具栏按钮启用条件格式功能
allowCalculatedFieldboolean启用计算字段创建功能
showFieldListboolean显示字段列表面板(用于配置字段的 UI)
showGroupingBarboolean在顶部显示分组栏(用于拖放整理字段的 UI)
showToolbarboolean显示包含导出、报表和字段管理按钮的工具栏
toolbarstring[]工具栏项目数组:['New', 'Save', 'SaveAs', 'Rename', 'Remove', 'Load', 'Grid', 'Chart', 'MDX', 'Export', 'SubTotal', 'GrandTotal', 'ConditionalFormatting', 'NumberFormatting', 'FieldList']
showTooltipboolean将鼠标悬停在单元格上时显示工具提示
enablePersistenceboolean自动将数据透视状态保存到本地存储
conditionalFormatSettingsIConditionalFormatSettings[]预定义条件格式规则:值范围、运算符和样式
aggregateTypesstring[]限制下拉列表中可用的聚合类型
maxNodeLimitInMemberEditornumber成员筛选对话框中加载的最大成员数(默认值为 1000)
saveReportFunction(args)用户通过工具栏保存报表时触发的回调
loadReportFunction(args)用户通过工具栏加载报表时触发的回调
renameReportFunction(args)用户通过工具栏重命名报表时触发的回调
removeReportFunction(args)用户通过工具栏移除报表时触发的回调
newReportFunction(args)用户通过工具栏创建新报表时触发的回调
fetchReportFunction()用于获取已保存报表列表的回调
DataSourceSettings 属性
属性类型描述
dataSourceany[]包含数据的 JSON 数组或 DataManager 实例
type'JSON' | 'CSV'数据源类型(默认:'JSON')
rowsIField[]要在行轴中显示的字段
columnsIField[]要在列轴中显示的字段
valuesIField[]用于聚合的值/度量字段
filtersIField[]要在筛选轴中显示的字段
expandAllboolean初始展开所有行/列分组
drilledMembersIDrilledMember[]预先展开的成员:[{ name: 'Country', items: ['France'] }]
filterSettingsIFilter[]要应用的成员/标签/值筛选器
sortSettingsISort[]字段的排序规则
formatSettingsIFormatSettings[]数字格式:[{ name: 'Amount', format: 'C0' }]
calculatedFieldSettingsICalculatedFieldSettings[]计算字段公式
核心方法
// Export methods
excelExport()                          // Export pivot to Excel (.xlsx)
pdfExport()                            // Export pivot to PDF
csvExport()                            // Export pivot to CSV

// Dialog methods
createCalculatedFieldDialog()          // Show calculated field creation dialog
showConditionalFormattingDialog()      // Open conditional formatting dialog
createDrillThroughDialog()             // Show drill-through data dialog

// Data manipulation
refresh()                              // Refresh pivot with current settings
setProperties({...})                   // Update properties dynamically

// Data retrieval
getFieldList()                         // Get all available fields from data source
getDataSourceSettings()                // Get current dataSourceSettings configuration

// Persistence
getPersistData()                       // Get serialized pivot state
loadPersistData(data)                  // Restore pivot state

事件

下方列出了 PivotViewComponent 文档中的所有事件。使用 Vue 的 :eventName="handler" 语法进行绑定。

数据操作事件
事件参数触发时机
actionBegindataSourceSettings、actionName、fieldInfo、cancel任何透视操作(筛选、排序、聚合、计算字段)之前
actionCompletedataSourceSettings、actionName、fieldInfo、actionInfo透视操作成功完成后
actionFailureactionName、errorInfo透视操作失败或遇到错误时

常见的 actionName 值:

  • "Aggregate field" - 选择聚合类型时
  • "Field filtered" - 应用成员/标签/值筛选器时
  • "Field sorted" - 通过 UI 对字段排序时
  • "Edit pivot table" - 编辑透视表中的单元格时
  • "Remove field" / "Add field" - 从分组栏中移除/添加字段时
单元格交互事件
事件参数触发时机
aggregateCellInforowHeaders、columnHeaders、value、valueField、aggregateType每个值单元格渲染时(可用于覆盖值或跳过格式设置)
cellClick单元格坐标、成员信息用户点击透视单元格时
cellDoubleClick单元格坐标、成员信息用户双击透视单元格时
字段配置事件
事件参数触发时机
calculatedFieldCreatecalculatedField、calculatedFieldSettings、fieldName、dataSourceSettings、cancel用户在对话框中创建/编辑计算字段时
导出事件
事件参数触发时机
beforeExcelExportdataSourceSettings、isCollapsedStateSavedExcel 导出开始前
excelExportComplete导出结果数据Excel 导出完成后
beforePdfExportdataSourceSettings、isCollapsedStateSavedPDF 导出开始前
pdfExportComplete导出结果数据PDF 导出完成后
beforePrintdataSourceSettings开始打印前
printComplete打印结果打印完成后
下钻与展开事件
事件参数触发时机
drillThrough行/列标题、原始数据记录用户发起穿透操作时
beginDrillThrough单元格上下文、成员信息穿透操作开始前(设置 args.cancel = true 可阻止操作)
字段配置与分组栏事件
事件参数触发时机
fieldDrop正在拖放的字段、目标轴(行/列/值/筛选器)将字段拖放到分组栏中以添加字段时
fieldDragStart正在拖动的字段、源轴从分组栏开始拖动字段时
fieldRemove要移除的字段、源轴从分组栏中移除字段时
onFieldDropped已放置的字段、目标轴字段成功放置后触发(类似于 fieldDrop,但在操作后触发)
aggregateMenuOpen字段、当前聚合类型打开分组栏/字段列表中的聚合类型下拉菜单时
导出自定义事件
事件参数触发时机
excelQueryCellInfo单元格数据、行/列信息、单元格类型Excel 导出期间的每个单元格(自定义单元格样式、值和格式)
excelHeaderQueryCellInfo标题单元格信息、行/列层级Excel 导出中的每个标题单元格(自定义标题样式)
pdfQueryCellInfo单元格数据、行/列信息、pdfCellPDF 导出期间的每个单元格(自定义 PDF 单元格外观)
headerCellInfo标题单元格上下文、样式信息UI 中每次渲染标题单元格时(自定义标题外观)
queryCellInfo值单元格数据、样式、aggregateTypeUI 中每次渲染值单元格时(自定义单元格外观、值和格式)

事件用法示例:

<template>
  <ejs-pivotview 
    :dataSourceSettings="dataSourceSettings"
    @actionBegin="onActionBegin"
    @actionComplete="onActionComplete"
    @aggregateCellInfo="onAggregateCellInfo">
  </ejs-pivotview>
</template>

<script setup>
const onActionBegin = (args) => {
  if (args.actionName === 'Aggregate field') {
    console.log('User changing aggregation for:', args.fieldInfo.name);
    // Set args.cancel = true to prevent action
  }
};

const onActionComplete = (args) => {
  if (args.actionName === 'Field filtered') {
    console.log('Filter applied successfully');
  }
};

const onAggregateCellInfo = (args) => {
  // Override cell value: args.value = customValue;
  // Skip formatting: args.isFormatted = false;
};
</script>

开始使用

📄 阅读: references/getting-started.md

  • 安装步骤和依赖项
  • 设置基本的 PivotView
  • 配置基础知识
  • CSS 导入与主题设置 — 包括 Tailwind 3 单次导入主题包(@syncfusion/ej2-tailwind3-theme)
  • 主题应用方法 — npm 主题包、CDN、CRG、Theme Studio
  • 兼容 Vue 2 和 Vue 3
  • 字段列表组件 - 用于动态配置字段的 UI
  • 分组栏组件 - 用于内联字段整理和拖放
  • 加载状态与指示器 - 管理数据加载期间的 UI 反馈
  • 无障碍基础知识 - WCAG 合规性、键盘导航、屏幕阅读器

数据绑定与数据源

JSON 数据绑定

📄 阅读: references/data-binding.md

  • 绑定本地 JSON 数据
  • 使用带有 JsonAdaptor 的 DataManager
  • 文件上传和 JSON 加载
  • 本地与远程数据处理方式
  • 服务端透视处理 - 对大型数据集进行后端聚合
  • 复杂数据绑定模式 - 多数据源、实时更新、延迟加载
外部数据源

📄 阅读: references/connecting-to-data-source.md

  • MySQL 数据库连接
  • SQL Server 集成
  • MongoDB 连接
  • PostgreSQL、Oracle、Elasticsearch、Snowflake
  • 创建用于检索数据的 Web API 控制器
OLAP(分析服务)

📄 阅读: references/olap.md

  • SQL Server Analysis Services(SSAS)配置
  • OLAP 字段命名约定 [Dimension].[Hierarchy]
  • 连接到 SSAS 多维数据集以进行多维分析
  • 处理海量数据集(数百万行)
  • OLAP 与 JSON 绑定对比
  • 使用 OLAP 层级进行向下钻取

数据操作与格式设置

数据格式设置

📄 阅读: references/data-formatting.md

  • 数字格式设置(货币、百分比、小数)
  • 日期和时间值格式设置
  • 自定义格式模式
  • 格式设置配置
  • 国际化与本地化 - 多语言支持、RTL、区域格式设置
  • 无障碍样式 - 高对比度、适合色盲用户的配色、字体大小
条件格式

📄 阅读: references/conditional-formatting.md

  • 启用条件格式功能
  • 使用条件和运算符定义格式规则
  • 根据单元格值应用样式(backgroundColor、color、fontFamily 等)
  • 在 dataSourceSettings 中预定义规则
  • 通过工具栏显示条件格式对话框
  • 动态修改规则及其效果
数据整形与字段配置

📄 阅读: references/data-shaping.md

  • 定义行、列和值
  • 字段层级与嵌套
  • 标题和字段组织
  • 展开/折叠行为
  • 配置最佳实践
行与列属性

📄 阅读: references/row-and-column.md

  • 设置宽度和高度(像素、百分比、自动)
  • 自定义行高
  • 列宽设置
  • 响应式尺寸调整
  • 最小宽度保障
显示/隐藏总计

📄 阅读: references/show-hide-totals.md

  • 控制总计的可见性
  • 设置小计的位置和显示方式
  • 配置汇总行
  • 条件显示总计

数据分析与数据透视操作

筛选数据

📄 阅读: references/filtering.md

  • 成员筛选(包含/排除特定成员、全选、搜索、排序)
  • 标签筛选(包含、开头为、结尾为、介于等,适用于字符串、数字和日期)
  • 值筛选(按汇总值范围筛选,包括 前 N 项 和 后 N 项)
  • 通过 filterSettings 以编程方式配置筛选
  • 筛选对话框 UI 功能(搜索、全选、排序、将当前选项追加到筛选条件)
  • OLAP 专用选项:loadOnDemandInMemberEditor 和 levelCount
  • 使用 maxNodeLimitInMemberEditor 优化大型数据集筛选
  • 筛选相关事件:memberFiltering、memberEditorOpen、actionBegin、actionComplete、actionFailure
排序字段与值

📄 阅读: references/sorting.md

  • 成员排序(升序/降序)
  • 值排序(按汇总值排序)
  • 自定义排序(用户定义成员顺序)
  • 字母数字排序(按数值或字母顺序)
  • 排序设置配置
  • 在复杂层级结构中进行多级排序
聚合与计算字段

📄 阅读: references/aggregation-and-calculated-fields.md

  • 聚合类型(Sum、Average、Count、Min、Max 等)
  • 百分比聚合(占总计的百分比、占行的百分比、占父级的百分比等)
  • 比较聚合(差值、百分比差值)
  • 运行总计和运行总计百分比(运行总计的累计百分比;仅客户端引擎支持)
  • 自定义聚合下拉列表
  • 隐藏聚合标签以简化 UI
  • 计算字段和自定义公式
对数据分组

📄 阅读: references/grouping.md

  • 数字分组(如 1-5、6-10 等范围)
  • 日期分组(年、季度、月、周、日)
  • 自定义分组(特定于业务的类别)
  • 以编程方式配置分组
  • 在同一数据透视表中进行多类型分组
  • 分组 UI 操作和取消分组功能
编辑单元格数据

📄 阅读: references/editing.md

  • 单元格编辑模式(Normal、Dialog、Batch、Command Columns)
  • CRUD 操作(创建、读取、更新、删除)
  • 编辑设置配置
  • 安全确认对话框
  • 编辑事件和验证
  • 使用批处理模式进行批量编辑
  • 数据网格编辑器配置 — 网格行为、选择、性能、分页

下钻与导航

下钻与上钻

📄 阅读: references/drill-down-up.md

  • 展开/折叠层次结构数据
  • 下钻位置和指定成员下钻
  • 配置 expandAll 属性
  • 仅展开特定字段
  • 排除下钻成员
  • 根据位置进行下钻
报表操作

📄 阅读: references/report-manipulation.md

  • 动态修改报表
  • 字段列表交互
  • 分组栏操作
  • 报表更新与刷新
  • 加载预定义报表 - 报表模板、服务器端模板、初始报表加载
超链接

📄 阅读: references/hyperlink.md

  • 在单元格中启用超链接
  • 超链接设置配置
  • 行标题超链接
  • 列标题超链接
  • 值单元格超链接
  • 汇总单元格超链接
  • 条件超链接规则
  • 自定义 CSS 样式

可视化与布局

经典/表格布局

📄 阅读: references/classic-layout.md

  • 表格布局的优势与设置
  • 并排显示行字段
  • 总计位置
  • 小计位置
  • 布局配置(gridSettings.layout)
  • 限制与兼容性说明
数据透视图集成

📄 阅读: references/pivot-chart.md

  • 数据透视图设置与显示模式
  • 21 种以上图表类型(折线图、柱形图、面积图、条形图、气泡图、散点图等)
  • 显示选项(仅网格、仅图表、两者)
  • 主视图选择
  • 图表自定义(系列、坐标轴、图例)
  • 图表中的下钻
工具提示配置

📄 阅读: references/tooltip.md

  • 使用 showTooltip 属性启用/禁用工具提示
  • 使用 HTML 和动态占位符自定义工具提示模板
  • 模板占位符:${rowHeaders}、${columnHeaders}、${valueField}、${aggregateType}、${value}
  • 带 CSS 样式的基础和高级模板示例
  • 通过 chartSettings.tooltip 设置图表专用工具提示
  • 工具提示定位与移动设备注意事项
  • 无障碍最佳实践与键盘支持

导出与工具栏

导出为 Excel 和 PDF

📄 阅读: references/export.md

  • Excel 导出(.xlsx 格式)
  • CSV 导出功能
  • PDF 导出功能
  • 调用导出方法
  • 工具栏导出选项
  • 导出时保留数据
工具栏与报表管理

📄 阅读: references/toolbar.md

  • 使用 showToolbar 属性启用工具栏
  • 配置工具栏项目数组(New、Save、SaveAs、Load、Rename、Remove、Grid、Chart、Export、ConditionalFormatting 等)
  • 报表生命周期回调:saveReport()、loadReport()、renameReport()、removeReport()
  • 使用 fetchReport() 检索已保存的报表
  • 自定义工具栏项目与样式
  • 报表数据持久化与检索
  • 尺寸与布局配置 - 组件尺寸、响应式行为、容器尺寸

状态与性能

状态持久化

📄 阅读: references/state-persistence.md

  • 启用持久化(enablePersistence)
  • 自动将状态保存到本地存储
  • 跨会话保留布局
  • 以编程方式保存和加载数据透视布局
  • getPersistData() 和 loadPersistData() 方法
  • 自定义持久化工作流
性能最佳实践

📄 阅读: references/performance.md

  • 对大型数据集使用虚拟滚动
  • 分页实现
  • 服务端数据透视引擎
  • 数据压缩技术
  • 延迟布局更新功能
  • 排序优化
  • 成员筛选性能
  • 分组的影响与替代方案

快速入门示例

<template>
  <div id="app">
    <ejs-pivotview
      :dataSourceSettings="dataSourceSettings"
      :height="height"
      :width="width"
      :gridSettings="gridSettings"
      :showFieldList="showFieldList">
    </ejs-pivotview>
  </div>
</template>

<script setup>
import { PivotViewComponent as EjsPivotview, FieldList } from "@syncfusion/ej2-vue-pivotview";
import { pivotData } from './pivotData.js';
import { provide } from "vue";

const dataSourceSettings = {
  dataSource: pivotData,
  expandAll: false,
  columns: [{ name: 'Year', caption: 'Production Year' }, { name: 'Quarter' }],
  rows: [{ name: 'Country' }, { name: 'Products' }],
  values: [
    { name: 'Sold', caption: 'Units Sold' },
    { name: 'Amount', caption: 'Sold Amount' }
  ],
  formatSettings: [{ name: 'Amount', format: 'C0' }],
  filters: []
};

const height = '450px';
const width = '100%';
const showFieldList = true;
const gridSettings = { columnWidth: 120, layout: 'Compact' };

provide('pivotview', [FieldList]);
</script>

<style>
/* Tailwind 3 theme package — single import covers all Pivot Table dependencies */
@import "../node_modules/@syncfusion/ej2-tailwind3-theme/styles/pivotview/index.css";
</style>

常见模式

模式 1:汇总分析

定义 rows、columns 和 values,以创建数据的汇总摘要。

模式 2:下钻探索

使用 expandAll: false 和下钻图标,让用户探索层次数据。

模式 3:多源分析

使用 dataSourceSettings.type 绑定不同的数据源(JSON、OLAP、关系数据库)。

模式 4:可视化呈现

通过 displayOption: { view: 'Chart' } 启用数据透视图,以直观呈现数据。

模式 5:处理大型数据集

组合使用 virtualScrolling: true、allowPaging: true 或服务端引擎,以提升性能。


关键属性参考

属性类型用途
dataSourceSettings对象定义数据源、字段和聚合规则
gridSettings对象控制布局、尺寸和网格行为
displayOption对象控制网格与图表的显示状态
chartSettings对象配置图表类型和外观
hyperlinkSettings对象启用并配置超链接
allowExcelExport布尔值启用 Excel 导出功能
allowPaging布尔值为大型数据集启用分页
enableVirtualization布尔值启用虚拟滚动
enablePersistence布尔值将组件状态保存在本地存储中
showFieldList布尔值显示字段列表 UI
showGroupingBar布尔值显示分组栏 UI

何时阅读各参考文档

  • 需要设置 PivotView? → getting-started.md
  • 需要绑定数据? → data-binding.md 或 connecting-to-data-source.md
  • 需要配置字段/布局? → data-shaping.md、row-and-column.md
  • 需要添加下钻? → drill-down-up.md、report-manipulation.md
  • 需要显示图表? → pivot-chart.md
  • 需要添加超链接? → hyperlink.md
  • 需要导出数据? → export.md、toolbar.md
  • 需要保存状态? → state-persistence.md
  • 需要优化性能? → performance.md

后续步骤

  1. 从 getting-started.md 开始,设置第一个 PivotView
  2. 使用 data-binding.md 或 connecting-to-data-source.md 绑定数据
  3. 使用 data-shaping.md 配置字段和布局
  4. 使用相关参考指南自定义外观和行为
  5. 根据需要实现导出和持久化功能
  6. 使用 performance.md 针对大型数据集优化性能

评论

支持 Markdown