关于 syncfusion-wpf-olap-grid
此技能介绍如何在 .NET Framework WPF 应用中实现 Syncfusion WPF OLAP Grid,涵盖 OLAP 数据源连接、多维分析、层级钻取、格式设置和报告导出。
主要功能
- 01显示 OLAP 多维数据集数据
- 02钻取维度层级
- 03选择网格布局
- 04应用条件格式
- 05导出为 Excel、Word、PDF 或 CSV
- 06显示 KPI 和成员属性
适用场景
- 01构建 OLAP 数据 BI 仪表板
- 02按地区和时间分析销售
- 03突出显示财务差异
- 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.mdcell-selection.mdconditional-formatting.mddata-source-configuration.mddrill-operations.mdexporting.mdgetting-started.mdgrid-layouts.mdkpi-and-member-properties.mdxaml-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.WPFSyncfusion.GridCommon.WPFSyncfusion.Linq.BaseSyncfusion.Olap.BaseSyncfusion.OlapGridCommon.WPFSyncfusion.OlapShared.WPFSyncfusion.Shared.WPFSyncfusion.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)- 将网格导出为 ExcelExportToWord(string filename)- 将网格导出为 WordExportToPdf(string filename)- 将网格导出为 PDF
OlapDataManager
SetCurrentReport(OlapReport report)- 设置活动 OLAP 报表- 构造函数接受连接字符串,用于 OLAP 数据源
OlapReport 结构
CurrentCubeName- 要查询的多维数据集名称CategoricalElements- 列轴集合(维度和度量值)SeriesElements- 行轴集合(维度)
常见使用场景
商业智能仪表板
创建高管仪表板,展示 KPI、销售指标和绩效指标,并支持下钻以进行详细分析。
销售分析报表
跨多个维度(时间、地理区域、产品)分析销售数据,并可下钻查看特定区域或时间段。
财务报表
使用条件格式显示 OLAP 多维数据集中的财务数据,以突出显示差异、趋势和异常值。
多维数据探索
让用户通过沿层级下钻并以交互方式透视维度,探索复杂数据集。
数据导出和分发
生成格式化的 Excel、Word 或 PDF 报表,分发给需要离线访问 OLAP 分析的利益相关者。
对比分析
使用类似 Excel 的布局和成员属性,跨不同维度比较多个度量值(实际值与预算值、当年与上年)。