mcpField
S
syncfusion-wpf-olap-grid

syncfusion-wpf-olap-grid

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

关于 syncfusion-wpf-olap-grid

此技能介绍如何在 .NET Framework WPF 应用中实现 Syncfusion WPF OLAP Grid,涵盖 OLAP 数据源连接、多维分析、层级钻取、格式设置和报告导出。

主要功能

  1. 01显示 OLAP 多维数据集数据
  2. 02钻取维度层级
  3. 03选择网格布局
  4. 04应用条件格式
  5. 05导出为 Excel、Word、PDF 或 CSV
  6. 06显示 KPI 和成员属性

适用场景

  1. 01构建 OLAP 数据 BI 仪表板
  2. 02按地区和时间分析销售
  3. 03突出显示财务差异
  4. 04导出分析结果供离线分发

安装

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

$npx skills add https://github.com/syncfusion/wpf-ui-components-skills --skill syncfusion-wpf-olap-grid

安装后在 Claude Code 中输入/syncfusion-wpf-olap-grid确认已加载。

包含的文件

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

references/
advanced-features.md
cell-selection.md
conditional-formatting.md
data-source-configuration.md
drill-operations.md
exporting.md
getting-started.md
grid-layouts.md
kpi-and-member-properties.md
xaml-configuration.md

详细介绍

实现 OLAP 网格

Syncfusion WPF OLAP Grid 是一款适用于业务展示的控件,可读取 OLAP 数据源,创建多维视图以分析业务数据。它提供上钻/下钻功能、多种布局选项、条件格式设置和全面的导出功能,适用于商业智能应用。

何时使用此技能

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

  • 在 WPF 应用程序中显示 OLAP 数据,数据源为 SSAS(SQL Server Analysis Services)或脱机多维数据集
  • 创建多维分析视图,包含行、列和度量值交叉区域
  • 实现上钻/下钻导航,浏览层次维度数据
  • 构建商业智能仪表板,支持 KPI 可视化和分析功能
  • 配置不同的网格布局(Normal、Excel-like、Top Summary、No Summaries)
  • 应用条件格式,根据业务规则突出显示数据
  • 将 OLAP 分析导出为 Excel、Word、PDF 或 CSV 格式
  • 连接多维数据集数据源并定义自定义 OLAP 报表
  • 在维度成员旁显示成员属性
  • 为大型 OLAP 数据集实现分页

此技能涵盖从设置和数据绑定到条件格式、导出选项和交互式钻取操作等高级功能的完整实现流程。

组件概述

主要功能:

  • 显示来自 OLAP 多维数据集的多维数据
  • 提供五种网格布局,满足不同的展示需求
  • 支持对行和列进行多级上钻/下钻
  • 支持使用自定义单元格样式设置条件格式
  • 支持导出为 Excel、Word、PDF 和 CSV
  • 支持 KPI(关键绩效指标)
  • 显示成员属性
  • 支持大型数据集分页
  • 通过查询设计器在设计时进行绑定
  • 支持单元格选择和超链接

核心组件:

  • OlapGrid - 主网格控件
  • OlapDataManager - 管理 OLAP 数据和报表
  • OlapReport - 定义多维数据集查询(维度、度量值、筛选器)
  • DimensionElement - 表示维度层次结构
  • MeasureElements - 表示要显示的度量值
安装 NuGet 包

要在 WPF 应用程序中使用 OLAP Grid,请安装以下 NuGet 包:

Install-Package Syncfusion.OlapGrid.WPF
程序集引用

OLAP Grid 需要以下程序集:

程序集引用

  • Syncfusion.Grid.WPF
  • Syncfusion.GridCommon.WPF
  • Syncfusion.Linq.Base
  • Syncfusion.Olap.Base
  • Syncfusion.OlapGridCommon.WPF
  • Syncfusion.OlapShared.WPF
  • Syncfusion.Shared.WPF
  • Syncfusion.Tools.WPF

NuGet 包

  • Syncfusion.OlapGrid.WPF
重要说明

Syncfusion OlapGrid 控件仅支持 .NET Framework WPF 应用程序,不支持 .NET Core。 使用 OlapGrid 时,请创建基于 Framework 的 WPF 示例。

文档与导航指南

入门

📄 阅读: references/getting-started.md

适用于以下需求:

  • 安装并配置 OLAP Grid 控件
  • 在 WPF 项目中添加所需程序集
  • 了解许可要求
  • 创建基本的 OLAP Grid 实现(XAML、代码隐藏或 Blend)
  • 设置 OlapDataManager 和连接字符串
  • 使用查询设计器在设计时进行绑定
  • 创建包含维度和度量值的第一个 OLAP 报表
数据源配置

📄 阅读: references/data-source-configuration.md

适用于以下需求:

  • 配置 OLAP 数据源连接(SSAS 或脱机多维数据集)
  • 使用维度和度量值构建 OlapReport
  • 指定多维数据集名称和连接字符串
  • 添加分类元素(列轴)和系列元素(行轴)
  • 配置维度层次结构和级别
  • 设置度量值元素
  • 了解 OlapDataManager 工作流
网格布局

📄 阅读: references/grid-layouts.md

适用于以下需求:

  • 在五种布局类型(Normal、Excel-like、Top Summary、No Summaries)中进行选择
  • 将汇总单元格放置在父成员的顶部或底部
  • 使用 Excel-like 布局显示成员属性
  • 在 XAML 或代码中配置布局属性
  • 了解汇总项和子成员的位置
  • 根据业务需求选择合适的布局
展开操作

📄 阅读: references/drill-operations.md

适用于以下需求:

  • 实现通过层次结构向下或向上展开导航
  • 配置行和列的展开位置
  • 启用多级展开
  • 支持所有级别类型的成员
  • 以编程方式处理展开事件
  • 管理展开状态和导航模式
  • 优化展开性能
条件格式

📄 阅读: references/conditional-formatting.md

适用于以下需求:

  • 根据数据条件应用单元格格式
  • 使用 OlapGridDataConditionalFormat 类
  • 使用条件类型(GreaterThan、LessThan、Equals)定义筛选条件
  • 使用谓词(And、Or)组合条件
  • 自定义单元格样式(背景、前景、字体、边框)
  • 在 XAML 或代码隐藏文件中配置格式
  • 应用多个条件格式
导出

📄 阅读: references/exporting.md

适用于以下需求:

  • 将 OLAP Grid 导出到 Excel(ExportToExcel 方法)
  • 导出到 Word 文档(ExportToWord 方法)
  • 导出到 PDF 文件(ExportToPdf 方法)
  • 导出为 CSV 格式(GridCsvExport 类)
  • 在导出的文档中保留格式
  • 处理文件对话框和导出配置
  • 实现导出错误处理
单元格选择

📄 阅读: references/cell-selection.md

适用于以下需求:

  • 配置单元格选择模式
  • 处理选择事件
  • 以编程方式选择单元格
  • 自定义选择行为
  • 支持多单元格选择
  • 管理选择状态
KPI 和成员属性

📄 阅读: references/kpi-and-member-properties.md

适用于以下需求:

  • 显示关键绩效指标(KPI)
  • 配置 KPI 状态和趋势可视化
  • 在维度旁显示成员属性
  • 使用 Excel-like 布局显示成员属性
  • 绑定多维数据集定义中的成员属性
  • 配置 OlapReport 以显示 KPI
高级功能

📄 阅读: references/advanced-features.md

适用于以下需求:

  • 为大型 OLAP 数据集实现分页
  • 为单元格添加超链接功能
  • 冻结行标题或列标题
  • 自定义单元格工具提示
  • 使用网格样式对话框设置格式
  • 启用 RTL(从右到左)支持
  • 配置无障碍功能
XAML 配置

📄 阅读: references/xaml-configuration.md

适用于以下需求:

  • 在 XAML 中以声明方式配置 OLAP Grid
  • 通过 XAML 标记设置属性
  • 在 XAML 中定义条件格式
  • 管理 XAML 命名空间
  • 使用样式和模板
  • 应用资源管理模式
  • 遵循 XAML 最佳实践

快速入门示例

下面是一个最简可运行示例,用于创建一个包含 OLAP 多维数据集数据的 OLAP Grid:

XAML 设置
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
        x:Class="MyApp.MainWindow">
    <Grid>
        <syncfusion:OlapGrid Name="olapGrid1" />
    </Grid>
</Window>
代码隐藏
using Syncfusion.Windows.Grid.Olap;
using Syncfusion.Olap.Manager;
using Syncfusion.Olap.Reports;

public partial class MainWindow : Window
{
    private OlapDataManager olapDataManager;
    private string connectionString = "YOUR_END_POINT"; // For e.g - "Data Source=http://<your-ssas-server>/olap/msmdpump.dll;Initial Catalog=Adventure Works DW 2008 SE;";
    
    public MainWindow()
    {
        InitializeComponent();
        
        // Initialize OlapDataManager with connection string
        olapDataManager = new OlapDataManager(connectionString);
        
        // Create and set the OLAP report
        olapDataManager.SetCurrentReport(CreateOlapReport());
        
        // Bind to OlapGrid
        olapGrid1.OlapDataManager = olapDataManager;
        olapGrid1.DataBind();
    }
    
    private OlapReport CreateOlapReport()
    {
        OlapReport report = new OlapReport();
        
        // Set cube name
        report.CurrentCubeName = "Adventure Works";
        
        // Configure column dimension
        DimensionElement columnDimension = new DimensionElement();
        columnDimension.Name = "Customer";
        columnDimension.AddLevel("Customer Geography", "Country");
        
        // Configure measure
        MeasureElements measures = new MeasureElements();
        measures.Elements.Add(new MeasureElement { Name = "Internet Sales Amount" });
        
        // Configure row dimension
        DimensionElement rowDimension = new DimensionElement();
        rowDimension.Name = "Date";
        rowDimension.AddLevel("Fiscal", "Fiscal Year");
        
        // Add to report
        report.CategoricalElements.Add(columnDimension);
        report.CategoricalElements.Add(measures);
        report.SeriesElements.Add(rowDimension);
        
        return report;
    }
}

此示例创建了一个基本的 OLAP Grid,按客户地理位置(国家/地区)和财年显示互联网销售额。

常见模式

模式 1:设置网格布局
// Excel-like layout with indented child members
olapGrid1.Layout = GridLayout.ExcelLikeLayout;

// Normal layout with bottom summaries (default)
olapGrid1.Layout = GridLayout.Normal;

// Top summary layout
olapGrid1.Layout = GridLayout.NormalTopSummary;

// Layout without summaries
olapGrid1.Layout = GridLayout.NoSummaries;
模式 2:应用条件格式
// Create conditional format
OlapGridDataConditionalFormat format = new OlapGridDataConditionalFormat();

// Add conditions
format.Conditions.Add(new OlapGridDataCondition() 
{ 
    ConditionType = OlapGridDataConditionType.GreaterThan,
    MeasureElement = "Internet Sales Amount",
    Value = "2000000",
    PredicateType = PredicateType.And
});

// Set cell style
format.CellStyle = new OlapGridCellStyle() 
{ 
    Background = Brushes.Yellow,
    FontFamily = new FontFamily("Calibri"),
    FontSize = 12
};

// Apply to grid
olapGrid1.ConditionalFormats.Add(format);
模式 3:导出为不同格式
// Export to Excel
olapGrid1.ExportToExcel("SalesReport.xlsx");

// Export to Word
olapGrid1.ExportToWord("SalesReport.docx");

// Export to PDF
olapGrid1.ExportToPdf("SalesReport.pdf");

// Export to CSV
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "CSV file (.csv)|*.csv";
if (dialog.ShowDialog() == true)
{
    GridCsvExport csvExport = new GridCsvExport(olapGrid1.InternalGrid.Engine);
    csvExport.Export(dialog.FileName);
}
模式 4:多个维度和度量值
private OlapReport CreateComplexReport()
{
    OlapReport report = new OlapReport();
    report.CurrentCubeName = "Adventure Works";
    
    // Multiple column dimensions
    DimensionElement productDimension = new DimensionElement();
    productDimension.Name = "Product";
    productDimension.AddLevel("Product Categories", "Category");
    
    DimensionElement geographyDimension = new DimensionElement();
    geographyDimension.Name = "Customer";
    geographyDimension.AddLevel("Customer Geography", "Country");
    
    // Multiple measures
    MeasureElements measures = new MeasureElements();
    measures.Elements.Add(new MeasureElement { Name = "Internet Sales Amount" });
    measures.Elements.Add(new MeasureElement { Name = "Reseller Sales Amount" });
    
    // Row dimension
    DimensionElement dateDimension = new DimensionElement();
    dateDimension.Name = "Date";
    dateDimension.AddLevel("Fiscal", "Fiscal Year");
    
    // Build report
    report.CategoricalElements.Add(productDimension);
    report.CategoricalElements.Add(geographyDimension);
    report.CategoricalElements.Add(measures);
    report.SeriesElements.Add(dateDimension);
    
    return report;
}

关键属性和方法

OlapGrid 属性
  • OlapDataManager - 获取或设置 OlapDataManager 实例
  • Layout - 获取或设置网格布局类型(GridLayout 枚举)
  • ConditionalFormats - 条件格式规则集合
  • InternalGrid - 访问底层网格引擎以执行高级操作
OlapGrid 方法
  • DataBind() - 将网格绑定到数据源
  • ExportToExcel(string filename) - 将网格导出为 Excel
  • ExportToWord(string filename) - 将网格导出为 Word
  • ExportToPdf(string filename) - 将网格导出为 PDF
OlapDataManager
  • SetCurrentReport(OlapReport report) - 设置活动 OLAP 报表
  • 构造函数接受连接字符串,用于 OLAP 数据源
OlapReport 结构
  • CurrentCubeName - 要查询的多维数据集名称
  • CategoricalElements - 列轴集合(维度和度量值)
  • SeriesElements - 行轴集合(维度)

常见使用场景

商业智能仪表板

创建高管仪表板,展示 KPI、销售指标和绩效指标,并支持下钻以进行详细分析。

销售分析报表

跨多个维度(时间、地理区域、产品)分析销售数据,并可下钻查看特定区域或时间段。

财务报表

使用条件格式显示 OLAP 多维数据集中的财务数据,以突出显示差异、趋势和异常值。

多维数据探索

让用户通过沿层级下钻并以交互方式透视维度,探索复杂数据集。

数据导出和分发

生成格式化的 Excel、Word 或 PDF 报表,分发给需要离线访问 OLAP 分析的利益相关者。

对比分析

使用类似 Excel 的布局和成员属性,跨不同维度比较多个度量值(实际值与预算值、当年与上年)。


评论

支持 Markdown