mcpField
S
syncfusion-winforms-pivot-chart

syncfusion-winforms-pivot-chart

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

关于 syncfusion-winforms-pivot-chart

面向 Windows Forms 开发者的 Syncfusion Pivot Chart 实现技能,用于将多维透视数据可视化为交互式图表。内容涵盖层级钻取、字段分组、数据绑定和 Excel 导出,适用于业务分析场景。

主要功能

  1. 01支持多种图表类型
  2. 02支持层级钻取与回退
  3. 03绑定 IEnumerable 或 DataTable
  4. 04提供字段列表和拖放分组栏
  5. 05数据变更时自动更新图表
  6. 06支持导出到 Excel

适用场景

  1. 01按产品、地区和时间分析销售数据
  2. 02查看部门及期间的财务数据
  3. 03比较营销渠道和时间段的活动表现
  4. 04通过层级钻取探索业务指标

安装

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

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

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

包含的文件

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

references/
appearance-customization.md
chart-types.md
data-binding.md
drill-operations.md
export.md
getting-started.md
grouping-bar.md
legend.md
pivot-axis.md
pivot-table-field-list.md
sorting.md
touch-support.md
troubleshooting.md
zooming-scrolling.md

详细介绍

实现 Syncfusion Pivot Chart

在 Windows Forms 应用程序中实现 Syncfusion Pivot Chart 控件的全面指南。Pivot Chart 可交互式地可视化多维透视数据,并支持下钻功能,提供 11 种以上图表类型,以及分组栏、字段列表和 Excel 导出等高级功能。

何时使用此技能

在以下情况下使用此技能:

  • 以图形形式可视化透视数据,并使用多种图表类型
  • 实现下钻/上钻功能,以浏览层次数据的不同级别
  • 创建商业智能仪表板,并加入交互式透视可视化
  • 分析来自 IEnumerable 列表或 DataTable 的多维数据
  • 为分析型应用程序构建 OLAP 可视化界面
  • 通过分组栏和透视字段列表添加交互式数据探索功能
  • 将透视图表导出为 Excel 格式以用于报告
  • 以图表形式显示层次化的销售、财务或分析数据
  • 在 Windows Forms 应用程序中实现类似 Excel 的透视图表功能
  • 创建动态图表,根据透视字段选择进行更新

组件概览

Syncfusion Pivot Chart 是一款轻量、高性能的控件,可读取透视信息并以图形形式进行可视化。它提供:

  • 11 种以上图表类型: 折线图、样条图、柱形图、面积图、样条面积图、堆积面积图、堆积柱形图、百分比堆积面积图、百分比堆积柱形图、阶梯折线图、阶梯面积图
  • 下钻支持: 通过下钻/上钻浏览数据层次的内部级别
  • 数据绑定: 支持 IEnumerable 列表和 DataTable 数据源
  • 透视表字段列表: 内置透视架构设计器,类似 Microsoft Excel
  • 分组栏: 通过拖放交互式地对数据字段进行分组
  • 图例: 以颜色标识数据系列
  • 导出: 导出为 Excel 格式
  • 缩放和平移: 交互式探索数据
  • 触控支持: 适用于平板电脑和支持触控的设备
  • 实时更新: 数据更改时自动更新图表

文档和导航指南

入门

📄 阅读: references/getting-started.md

  • 程序集部署和依赖项
  • 通过设计器、代码或 Syncfusion Reference Manager 添加控件
  • 许可证要求(v16.2.0.x+)
  • 基本初始化和首次数据绑定
  • ItemSource、PivotAxis、PivotLegend 和 PivotCalculations 的设置
数据绑定

📄 阅读: references/data-binding.md

  • 绑定 IEnumerable 列表和 DataTable 数据源
  • 配置 ItemSource 属性
  • 为层次数据设置 PivotAxis
  • 配置 PivotLegend 以对数据系列分类
  • 设置 PivotCalculations 以聚合数据
  • 使用 EnableUpdating 实时更新
  • 使用 BeginUpdate/EndUpdate 优化性能
图表类型

📄 阅读: references/chart-types.md

  • 11 种受支持图表类型概览
  • 折线图、样条图和阶梯折线图
  • 柱形图和堆积柱形图
  • 面积图、样条面积图和阶梯面积图
  • 堆积面积图和堆积柱形图(100%)
  • 动态切换图表类型
  • ChartTypes 枚举
  • 为数据选择合适的图表类型
下钻操作

📄 阅读: references/drill-operations.md

  • 启用下钻/上钻功能
  • 配置 AllowDrillDown 属性
  • 浏览层次数据的不同级别
  • 使用展开器执行下钻操作
  • 以编程方式执行下钻操作
  • 用户交互和下钻事件
分组栏

📄 阅读: references/grouping-bar.md

  • 启用和配置分组栏
  • 通过拖放交互式地对字段进行分组
  • 操作和重新排列字段
  • 可见性和自定义选项
  • 用户与分组栏的交互
枢轴轴配置

📄 阅读: references/pivot-axis.md

  • 了解 PivotAxis 属性
  • 向轴添加 PivotItem 对象
  • 用于绑定数据字段的 FieldMappingName
  • 用于显示汇总数据的 TotalHeader
  • 使用多个轴项目构建分层结构
  • 轴自定义选项
枢轴表字段列表

📄 阅读: references/pivot-table-field-list.md

  • 内置枢轴架构设计器
  • 类似 Microsoft Excel 的字段列表界面
  • 启用并显示字段列表
  • 拖放配置字段
  • 设置和管理筛选器
  • 配置计算字段
  • 用户与字段列表的交互
图例

📄 阅读: references/legend.md

  • 配置 PivotLegend 属性
  • 使用颜色区分系列
  • 图例位置和布局
  • 可见性和自定义选项
  • 系列标签和格式设置
排序

📄 阅读: references/sorting.md

  • 对图表中的枢轴数据进行排序
  • 升序和降序排序
  • 对多个字段进行排序和自定义排序逻辑
  • 排序配置选项
导出

📄 阅读: references/export.md

  • 将枢轴图表导出到 Excel
  • 导出配置和选项
  • 文件格式设置
  • 以编程方式执行导出操作
  • 自定义导出内容
缩放和平移

📄 阅读: references/zooming-scrolling.md

  • 交互式缩放功能
  • 支持滚动浏览大型数据集,以及使用鼠标滚轮缩放
  • 缩放配置和自定义
  • 滚动条的外观和行为
触控支持

📄 阅读: references/touch-support.md

  • 支持平板电脑触控手势
  • 触控交互(轻触、滑动、捏合)
  • 针对支持触控的设备进行优化
  • 触控手势配置
  • 移动设备和平板电脑注意事项
外观和自定义

📄 阅读: references/appearance-customization.md

  • 自定义图表区域
  • 系列样式和颜色,以及调色板配置
  • 打印支持和设置
  • 自定义样式选项
故障排除

📄 阅读: references/troubleshooting.md

  • 常见问题和解决方案
  • 数据绑定错误及修复方法
  • 性能优化技巧
  • 如何启用下钻以及打印枢轴图表
  • 如何设置自定义调色板,以及调试和诊断技巧

快速入门示例

最简枢轴图表实现
using System;
using System.Windows.Forms;
using Syncfusion.Windows.Forms.PivotChart;
using Syncfusion.PivotAnalysis.Base;

namespace PivotChartDemo
{
    public partial class Form1 : Form
    {
        private PivotChart pivotChart1;
        
        public Form1()
        {
            InitializeComponent();
            
            // Initialize Pivot Chart
            pivotChart1 = new PivotChart();
            pivotChart1.Dock = DockStyle.Fill;
            
            // Bind data source
            pivotChart1.ItemSource = ProductSales.GetSalesData();
            
            // Configure Pivot Axis (hierarchical structure)
            pivotChart1.PivotAxis.Add(new PivotItem 
            { 
                FieldMappingName = "Product", 
                TotalHeader = "Total" 
            });
            pivotChart1.PivotAxis.Add(new PivotItem 
            { 
                FieldMappingName = "Country", 
                TotalHeader = "Total" 
            });
            pivotChart1.PivotAxis.Add(new PivotItem 
            { 
                FieldMappingName = "State", 
                TotalHeader = "Total" 
            });
            
            // Configure Pivot Legend (series categorization)
            pivotChart1.PivotLegend.Add(new PivotItem 
            { 
                FieldMappingName = "Date", 
                TotalHeader = "Total" 
            });
            
            // Configure Calculations (data aggregation)
            pivotChart1.PivotCalculations.Add(new PivotComputationInfo 
            { 
                FieldName = "Quantity", 
                Format = "#,##0" 
            });
            
            // Set chart type
            pivotChart1.ChartTypes = PivotChartTypes.Column;
            
            // Enable drill-down
            pivotChart1.AllowDrillDown = true;
            
            // Add to form
            this.Controls.Add(pivotChart1);
        }
    }
}

常见模式

模式 1:绑定到 IEnumerable 集合
using System.Collections.Generic;

// Data model
public class SalesData
{
    public string Product { get; set; }
    public string Region { get; set; }
    public string Quarter { get; set; }
    public int Quantity { get; set; }
    public decimal Amount { get; set; }
}

// Create and bind data
private void BindPivotChart()
{
    List<SalesData> salesList = new List<SalesData>
    {
        new SalesData { Product = "Laptop", Region = "North", Quarter = "Q1", Quantity = 50, Amount = 50000 },
        new SalesData { Product = "Laptop", Region = "South", Quarter = "Q1", Quantity = 40, Amount = 40000 },
        new SalesData { Product = "Mouse", Region = "North", Quarter = "Q1", Quantity = 200, Amount = 6000 },
        // Add more data...
    };
    
    pivotChart1.ItemSource = salesList;
    
    // Configure fields
    pivotChart1.PivotAxis.Add(new PivotItem { FieldMappingName = "Product", TotalHeader = "Total" });
    pivotChart1.PivotLegend.Add(new PivotItem { FieldMappingName = "Quarter", TotalHeader = "Total" });
    pivotChart1.PivotCalculations.Add(new PivotComputationInfo 
    { 
        FieldName = "Amount", 
        Format = "C",
        SummaryType = SummaryType.DoubleTotalSum 
    });
}
模式 2:动态切换图表类型
// Add buttons or menu items to switch chart types
private void btnLineChart_Click(object sender, EventArgs e)
{
    pivotChart1.ChartTypes = PivotChartTypes.Line;
}

private void btnColumnChart_Click(object sender, EventArgs e)
{
    pivotChart1.ChartTypes = PivotChartTypes.Column;
}

private void btnAreaChart_Click(object sender, EventArgs e)
{
    pivotChart1.ChartTypes = PivotChartTypes.Area;
}

private void btnStackingColumn_Click(object sender, EventArgs e)
{
    pivotChart1.ChartTypes = PivotChartTypes.StackingColumn;
}
模式 3:分层下钻配置
// Enable drill-down with multiple hierarchy levels
private void ConfigureDrillDown()
{
    pivotChart1.AllowDrillDown = true;
    
    // Define hierarchy: Category → Product → Region → State
    pivotChart1.PivotAxis.Clear();
    pivotChart1.PivotAxis.Add(new PivotItem 
    { 
        FieldMappingName = "Category", 
        TotalHeader = "All Categories" 
    });
    pivotChart1.PivotAxis.Add(new PivotItem 
    { 
        FieldMappingName = "Product", 
        TotalHeader = "All Products" 
    });
    pivotChart1.PivotAxis.Add(new PivotItem 
    { 
        FieldMappingName = "Region", 
        TotalHeader = "All Regions" 
    });
    pivotChart1.PivotAxis.Add(new PivotItem 
    { 
        FieldMappingName = "State", 
        TotalHeader = "All States" 
    });
}
模式 4:实时数据更新
// Enable automatic updates when data changes
private void ConfigureRealTimeUpdates()
{
    // Enable automatic chart updates
    pivotChart1.EnableUpdating = true;
    
    // Bind to observable collection or implement INotifyPropertyChanged
    var salesData = new BindingList<SalesData>(GetSalesData());
    pivotChart1.ItemSource = salesData;
    
    // Now any changes to salesData will automatically update the chart
}

// For bulk updates, use BeginUpdate/EndUpdate
private void BulkDataUpdate()
{
    pivotChart1.BeginUpdate();
    
    try
    {
        // Perform multiple data operations
        var data = (BindingList<SalesData>)pivotChart1.ItemSource;
        for (int i = 0; i < 100; i++)
        {
            data.Add(new SalesData { /* ... */ });
        }
    }
    finally
    {
        pivotChart1.EndUpdate(); // Chart updates once after all changes
    }
}
模式 5:带格式设置的多项计算
// Display multiple aggregated values with custom formatting
private void ConfigureMultipleCalculations()
{
    pivotChart1.PivotCalculations.Clear();
    
    // Total quantity
    pivotChart1.PivotCalculations.Add(new PivotComputationInfo
    {
        FieldName = "Quantity",
        Format = "#,##0",
        SummaryType = SummaryType.DoubleTotalSum,
        FieldHeader = "Total Qty"
    });
    
    // Total amount (currency)
    pivotChart1.PivotCalculations.Add(new PivotComputationInfo
    {
        FieldName = "Amount",
        Format = "C2",
        SummaryType = SummaryType.DoubleTotalSum,
        FieldHeader = "Total Amount"
    });
    
    // Average price
    pivotChart1.PivotCalculations.Add(new PivotComputationInfo
    {
        FieldName = "UnitPrice",
        Format = "C2",
        SummaryType = SummaryType.DoubleAverage,
        FieldHeader = "Avg Price"
    });
}

关键属性和方法

核心属性
属性类型说明
ItemSourceobject数据源(IEnumerable 或 DataTable)
PivotAxisPivotItemCollection图表轴字段(分层)
PivotLegendPivotItemCollection图例/系列字段
PivotCalculationsPivotComputationInfoCollection计算/汇总字段
ChartTypesPivotChartTypes图表类型(Line、Column、Area 等)
AllowDrillDownbool启用下钻/上钻操作
EnableUpdatingbool数据变化时自动更新
PivotItem 属性
属性类型说明
FieldMappingNamestring要绑定的数据字段名称
TotalHeaderstring汇总行的标题文本
FieldHeaderstring字段的显示标题
PivotComputationInfo 属性
属性类型说明
FieldNamestring要计算的字段名称
Formatstring数字格式字符串
SummaryTypeSummaryType聚合类型(Sum、Average、Count 等)
FieldHeaderstring计算项的显示名称
主要方法
方法说明
BeginUpdate()暂停图表更新,以便执行批量操作
EndUpdate()恢复图表更新并刷新
Refresh()手动刷新图表

常见用例

商业智能仪表板
  • 按产品、地区和时间段可视化销售数据
  • 从年度视图逐级向下钻取到季度和月度视图
  • 比较多个指标(数量、收入、利润)
财务分析
  • 按部门、期间和类别显示财务数据
  • 通过分层下钻分析预算与实际支出
  • 可视化各业务部门的利润/亏损趋势
营销分析
  • 按渠道、地区和时间段分析营销活动表现
  • 比较多个 KPI(展示次数、点击次数、转化次数)
  • 从营销活动级别向下钻取到广告组级别

性能注意事项

  1. 使用 BeginUpdate/EndUpdate 执行批量数据操作,以避免多次重绘
  2. 限制层级深度——3-4 个层级最有利于性能和易用性
  3. 绑定数据前先筛选数据,而不是绑定整个数据集
  4. 考虑数据量——对于非常大的数据集(100k+ 行),请预先聚合数据

最佳实践

  1. 创建透视图表控件前,务必先注册许可证密钥
  2. 在 PivotAxis 中定义清晰的层级结构,以便直观地下钻
  3. 使用描述性 TotalHeader 值,帮助用户更好地理解
  4. 适当设置计算项格式(货币、百分比、数字)
  5. 仅当数据具有有意义的层级结构时,才启用下钻
  6. 使用分组栏或字段列表,方便用户进行交互式探索

评论

支持 Markdown