适用于 .NET 桌面应用的透视表网格通常来自 WinForms 和 WPF 套件。在 Avalonia 上,选择很少。
TsgcAvaloniaPivotGrid 和 TsgcAvaloniaPivotFieldList 位于 esegece.sgcPivotGrid.Avalonia 软件包中。它们构建在 sgcUICore 的 Avalonia 控件基础之上,并使用 SkiaSharp 绘制,因此凡是 Avalonia 12 能在桌面上运行的地方,它们都能运行。软件包下限为 Avalonia 12.0,测试和演示在 12.1.4 上运行。
引擎对您已经在内存中的行做透视。它把每一列保存在带类型的列存储中,只需遍历一次源数据行即可完成聚合,并且只绘制结果中可见的部分。合计来自源值,绝不会是平均值的平均值。
标有 Registered 的功能不在免费的 Community 软件包中。其他所有功能在每个版本中都有。
| 功能 | 在 Avalonia 透视表网格上 | 版本 |
|---|---|---|
| 拖放字段列表 | TsgcAvaloniaPivotFieldList 带有行、列、筛选器和值区域,支持 DeferUpdate 和 ApplyChanges、带搜索的成员弹出窗口,以及日期字段上的分组菜单(无、年、季度、月、周、日) | 所有版本 |
| 聚合 | 求和、计数、平均值、最小值、最大值、不重复计数、标准差和方差(pvfSum 到 pvfVar),含小计和总计 | 所有版本 |
| 日期分组 | 使用 pvdYear、pvdQuarter、pvdMonth、pvdWeek 和 pvdDay 的 DateGrouping,每个字段一个层级 | 所有版本 |
| 筛选和排序 | 成员、标签和值筛选,按标签或按值排序 | 所有版本 |
| Top N | 字段上的 TopN 和 TopNOthers:保留排名靠前的项,其余汇总为“其他” | Registered |
| 值显示方式 | ShowAs:占行、列或总计的百分比、累计、与某项的差异以及排名 | Registered |
| 计算字段和计算项 | 引擎上的 CalculatedFields,以及字段上的 CalculatedItems,用于对同级项进行公式运算,例如 East+West;合计仍以源数据行为基础 | Registered |
| 异步计算 | AsyncCalculation、带 CancellationToken 并返回 Task<bool> 的 RecalculateAsync,以及 CancelCalculation,使窗口保持响应 | Registered |
| 条件格式和下钻 | 用于色阶的 FormatRules,以及用于查看单元格背后各行的 OnGetCellStyle、OnGetCellText 和 OnDrillDown | 所有版本 |
| 导出 | SaveToCSV、SaveToHTML、SaveToJSON、SaveToPNG 和 SaveToSVG | 所有版本 |
| Excel 导出 | SaveToXLSX 无需外部库即可写出真正的工作簿:合并表头、大纲、冻结表头、数字格式和从右到左的工作表 | Registered |
| 透视图表 | TsgcPivotChartTable 为 TsgcAvaloniaChart 上的 sgcCharts TsgcChartTableLink 提供数据,Layout = pvlBar 的字段列表会在图表上方放置字段按钮,图表设计器通过 ShowDesignerAsync 打开 | Registered 的 sgcPivotGrid 和 sgcCharts |
| 向透视表提问 | TsgcPivotGridAI 通过任意 TsgcUIAIProvider 和 TsgcAvaloniaAIQueryBar,将自然语言问题转换为透视布局。只发送字段目录(名称、标题、类型和少量示例值),绝不发送数据行 | 所有版本;撤销属于 Registered |
| 已保存布局 | SaveLayoutToString、LoadLayoutFromString、SaveLayoutToFile 和 LoadLayoutFromFile;透视布局 JSON 中的图表设置与 Delphi 按字节兼容 | Registered |
| 打印和 PDF | Print、ShowPrintPreview 和 ExportToPDF,每页都带表头;PDF 是带标记的 PDF/UA 文档,其中透视表成为真正的表格 | 所有版本 |
| 主题 | 浅色、深色和高对比度主题,以及 Fluent 预设;在 Fluent 下,使用 FluentTheme 的 Avalonia 12 为控件提供背景、边框、文本和填充 | 所有版本 |
| 从右到左和辅助功能 | 由 Avalonia 已有方向驱动的从右到左布局,以及默认开启的 UI Automation | 所有版本 |
| 语言 | 来自 12 种语言的内嵌语言包的最终用户文本,通过 sgcUILang.SetLanguage 切换 | 所有版本 |
XLSX 导出、计算项、异步计算、透视图表和 12 个语言包已列入 sgcUI .NET 历史记录的 2026.11.0 版本。完整的功能介绍请参阅 sgcPivotGrid 产品页面。
这两个文件复制自一个示例 Avalonia 12.1.4 应用,运行在 net8.0 上,使用编译绑定和 FluentTheme。它已针对 sgcPivotGrid Avalonia 源代码以 Release 方式构建,0 个错误,0 个警告。RecalculateAsync 和 SaveToXLSX 需要 Registered 版和 2026.11 版本。
一个 sgc 前缀映射所有 sgcUI 控件。字段是网格的内容,ItemsSource 绑定数据行,字段列表通过 PivotGrid 跟随网格:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sgc="https://www.esegece.com/sgcui"
xmlns:vm="using:PivotDemo"
x:Class="PivotDemo.MainWindow"
x:DataType="vm:TSalesViewModel"
Title="Avalonia pivot grid" Width="1100" Height="640">
<Grid ColumnDefinitions="*,260">
<sgc:TsgcAvaloniaPivotGrid x:Name="pivot" ItemsSource="{Binding Sales}" AlternateRows="True">
<sgc:TsgcAvaloniaPivotField FieldName="Region" Area="pvaRow" Caption="Region"/>
<sgc:TsgcAvaloniaPivotField FieldName="Date" Area="pvaColumn" DateGrouping="pvdYear" Caption="Year"/>
<sgc:TsgcAvaloniaPivotField FieldName="Date" Area="pvaColumn" DateGrouping="pvdQuarter" Caption="Quarter"/>
<sgc:TsgcAvaloniaPivotField FieldName="Amount" Area="pvaData" Aggregation="pvfSum"
DisplayFormat="#,##0.00" Caption="Sales"/>
</sgc:TsgcAvaloniaPivotGrid>
<sgc:TsgcAvaloniaPivotFieldList Grid.Column="1" Margin="8,0,0,0" PivotGrid="{Binding #pivot}"/>
</Grid>
</Window>由普通对象组成的 ObservableCollection 就足够了。每个公共成员都会成为一个透视列,集合发生更改后,透视表会在 100 ms 后重新加载:
using System;
using System.Collections.ObjectModel;
using System.Threading;
using System.Threading.Tasks;
using Avalonia.Controls;
namespace PivotDemo
{
public sealed class TSale
{
public string Region { get; set; }
public DateTime Date { get; set; }
public double Amount { get; set; }
}
public sealed class TSalesViewModel
{
public ObservableCollection<TSale> Sales { get; } = new ObservableCollection<TSale>();
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
TSalesViewModel oModel = new TSalesViewModel();
oModel.Sales.Add(new TSale { Region = "North", Date = new DateTime(2026, 2, 3), Amount = 1250 });
oModel.Sales.Add(new TSale { Region = "South", Date = new DateTime(2026, 5, 18), Amount = 980 });
DataContext = oModel;
}
// Registered edition: recalculate on a worker thread, then save an Excel workbook
private async Task DoExportAsync(CancellationToken aToken)
{
if (await pivot.Pivot.RecalculateAsync(aToken))
pivot.SaveToXLSX("sales.xlsx", "Sales");
}
}
}应用的其余部分是标准的 Avalonia 桌面模板:Avalonia.Desktop 和 Avalonia.Themes.Fluent、App.axaml 中的 <FluentTheme/>,以及 esegece.sgcPivotGrid.Avalonia 软件包,免费版则使用 esegece.sgcPivotGrid.Avalonia.Community。帮助中的 Avalonia 快速入门使用 BeginLoad、DefineColumn、AppendRow 和 EndLoad 在代码中构建同样的透视表。
Avalonia 透视表网格与 WinForms、WPF、VCL 和 FireMonkey 版本共享引擎、字段和布局格式。
| 目标 | 控件 | 平台 |
|---|---|---|
Avalonia 12、net8.0、net9.0、net10.0 | TsgcAvaloniaPivotGrid、TsgcAvaloniaPivotFieldList | Windows、Linux 和 macOS |
| .NET Framework 4.7.2、.NET 8、9 和 10 | TsgcWinFormsPivotGrid、TsgcWpfPivotGrid | Windows 上的 WinForms 和 WPF |
| Delphi 7 至 13、VCL | TsgcVCLPivotGrid | Win32 和 Win64 |
| Delphi XE6 至 13、FireMonkey | TsgcFMXPivotGrid | Windows、macOS、iOS 和 Android |
| C++ Builder 2007 至 13 | VCL 和 FMX 透视表网格 | 生成的 .hpp 头文件和静态库 |
NuGet 上的 esegece.sgcPivotGrid.Avalonia.Community,对年总收入低于 1,000,000 欧元且开发者不超过五人的个人或组织,在商业和非商业项目中均免费。包含网格、字段列表、聚合、日期分组、筛选、色阶、CSV、HTML、JSON、PNG 和 SVG 导出、打印以及 PDF。
单一软件包,每位开发者 €249,含完整 C# 源代码和 1 年更新。针对 WinForms、WPF 和 Avalonia 增加包含“其他”的 Top N、值显示方式、计算字段和计算项、已保存布局、XLSX 导出、异步计算和透视图表。
适用于 .NET 的所有 sgcUI 产品(含 sgcPivotGrid),每位开发者 €699 起。透视图表还需要 sgcCharts,它同样包含在 Enterprise 中。
于 2026-10-20 读取自表中链接的页面。
| Avalonia XPF 上的 WPF 套件透视表 | Avalonia Pro | sgcPivotGrid | |
|---|---|---|---|
| 透视表网格 | 由 XPF 运行的 WPF 控件,XPF 是“二进制兼容的 WPF 运行时” | Avalonia Pro 页面上未列出 | 带字段列表的原生 Avalonia 12 控件 |
| 许可 | XPF 按应用程序计:Internal 9,500 欧元,Business 29,500 欧元,Enterprise 起价 124,500 欧元 | 每席位每年 899 欧元,不含增值税 | 按开发者计,€249 起,无按应用程序收费,二进制再分发免费 |
| 条件 | XPF 第三方说明指出,Win32 API 垫片“DevExpress 控件需要”,并且“问题最常出现在使用 GDI 或 WinForms 组件的控件上” | Avalonia 软件包引用 Avalonia、Avalonia.Skia 和 SkiaSharp,而不是 WPF 或 WinForms | |
| 源代码 | Enterprise 中包含高级控件的完整源代码 | 每个 Registered 版都包含完整的 C# 源代码 |
XPF 的目标是让现有 WPF 应用程序在 macOS 和 Linux 上基本保持原有代码和控件运行,而 sgcPivotGrid 不做这件事:您把它添加到 Avalonia 视图中。如果您正在迁移 WPF 或 WinForms 应用,请阅读 从 WinForms 和 WPF 迁移到 Avalonia。如果您使用 Avalonia Pro,请阅读 Avalonia Pro 未提供的控件;sgcPivotGrid 可与 Avalonia Pro 控件并存运行。
sgcPivotGrid 的 .NET 演示包含两个 Avalonia 应用,在 .NET SDK 8.0 或更高版本下可运行于 Windows、Linux 和 macOS。
生成的 100,000 行销售数据,带字段列表、年、季度和月列、按值排序、色阶、CSV、HTML 和 PNG 导出以及 AI 查询栏。dotnet run 可启动它,dotnet run -- --test result.txt 则在屏幕外运行其自检。
如同 Excel 中的透视图表:TsgcAvaloniaChart 上的一个 TsgcAvaloniaPivotGrid、一个 TsgcPivotChartTable 和一个 TsgcChartTableLink,图表上方的字段按钮、图表设计器,以及保存在透视布局中的图表设置。透视图表仅限 Registered 版。
想要现成的可执行文件?每个 sgcUI 产品的已编译演示无需安装任何东西。
是的。TsgcAvaloniaPivotGrid 和 TsgcAvaloniaPivotFieldList 是 esegece.sgcPivotGrid.Avalonia 软件包中的 Avalonia 控件,构建在 sgcUICore 的 Avalonia 控件基础之上,并使用 SkiaSharp 绘制。该软件包面向 Avalonia 12(软件包下限为 12.0,已在 12.1.4 上测试)。没有 WPF 层,也没有 XPF 运行时。
通过 Avalonia 12 支持 Windows、Linux 和 macOS,目标框架为 net8.0、net9.0 和 net10.0。同一产品还提供适用于 .NET Framework 4.7.2 以及 .NET 8、9 和 10 的 WinForms 和 WPF 透视表网格,以及适用于 Delphi 和 C++ Builder 的 VCL 和 FireMonkey 透视表网格。
将 ItemsSource 绑定到视图模型的任意 IEnumerable,例如 ObservableCollection、List 或 DataView,并在 XAML 中将字段声明为带有 FieldName、Area 和 Aggregation 的 TsgcAvaloniaPivotField 元素。数据项的每个成员都会成为一个透视列。之后对集合的更改会按每 100 ms 一个时间窗口重新加载一次透视表。System.Data.DataTable 也可以通过 TsgcPivotSource_DataSet 读取。
Community 软件包 esegece.sgcPivotGrid.Avalonia.Community 包含网格、拖放字段列表、八种聚合、日期分组、成员、标签和值筛选、排序、色阶、CSV、HTML、JSON、PNG 和 SVG 导出、带预览的打印、PDF 导出、辅助功能和 AI 布局。包含“其他”的 Top N、值显示方式、计算字段和计算项、已保存布局、XLSX 导出、异步计算、透视图表以及 AI 布局的撤销需要 Registered 版。
可以。布局通过 SaveLayoutToString 或 SaveLayoutToFile 保存为 JSON,透视布局 JSON 中存储的图表设置与 Delphi 按字节兼容。已保存布局属于 Registered 版。