Delphi、C++ Builder & .NET sgcUI 的一部分

sgcPivotGrid,适用于 Delphi、C++ Builder & .NET 的数据透视表

把原始数据行变成答案。把字段拖到行、列和值中,按年、季度或月对日期分组,并让用户通过拖放字段列表构建自己的布局。类型化列存储可在不到一秒的时间内重新计算一百万行,双击即可显示任意单元格背后的源数据行。

VCL、FireMonkey、WinForms、WPF、Avalonia1,000,000 行:Win64 上重新计算预算 100 毫秒免费的 .NET 社区版包含在 sgcUI Enterprise 中
SalesPivot 演示:字段列表带有筛选器、列、行和值区域,旁边是它构建的透视表

数据透视表所需的一切

五个分组,十三项功能。标有“注册版”的功能不包含在免费的 .NET 社区版中。

速度与数据

加载一次,计算一次,有无窗口皆可。

透视 1,000,000 行后的 MillionRows 演示,以及它打印的计时标签

速度与数据

在不到一秒的时间内透视一百万行

订单历史和传感器日志很快就会超出电子表格的承受能力。sgcPivotGrid 将每一列保存在类型化列存储中,对源数据行遍历一遍即可聚合出所有单元格,并且只绘制结果的可见部分。重新计算 1,000,000 行的 QA 预算在 Win64 上为 100 毫秒,MillionRows 演示会加载并透视一百万行,并打印自己的计时。

  • TsgcPivotEngine 是引擎,在表格上以 Pivot 发布,也可单独使用
  • BeginLoad、DefineColumn、AppendRow 和 EndLoad 加载数据行,最后只重新计算一次
  • BeginUpdate 和 EndUpdate 把布局更改合并为一遍计算
  • 文本列采用字典编码,总计取自源值,而不是平均值的平均值
阅读帮助主题
DataSetPivot 演示:订单表位于透视表上方,透视表跟随编辑变化

速度与数据

可从 TDataSet、表格或您自己的代码提供数据

让透视表指向您已有的数据。数据集数据源可将任意 TDataSet 复制到引擎中,开启实时更新后会在每次提交后重新加载,因此透视表会跟随用户在表单中所做的编辑。表数据源读取任意 IsgcUITable,例如 sgcGrid,仅在表发生变化时重新加载。已在内存中持有数据行的代码只需直接追加。透视表绝不会写回您的数据。

  • TsgcPivotSource_DataSet,带 DataSet、Active、Columns 和 LiveUpdates
  • 任何 TDataSet 的后代都可使用,因为数据源通过 TDataLink 读取
  • TsgcPivotSource_Table 读取 sgcGrid 或任意其他 IsgcUITable,并在 TableVersion 变化时重新加载
  • 在 .NET 中,同一个引擎读取 DataTable
阅读帮助主题

分析

销售经理会问的问题,用属性来回答。

2025 年展开到季度和月份、2024 年折叠的透视表

分析

按人们的思维方式对日期分组

没有人会逐日阅读销售报告。把同一个日期字段多次添加到列中,并采用不同的分组,sgcPivotGrid 就会据此构建年、季度和月层级,每个层级都有自己的小计。用户可通过加号和减号按钮展开和折叠层级,您的代码也可以一次展开整个层级。展开或折叠只会构建新的快照,无需再次聚合数据。周和日分组则供需要它们的运营报表使用。

  • TsgcPivotDateGrouping:pvdYear、pvdQuarter、pvdMonth、pvdWeek 和 pvdDay
  • AddField('Date', pvaColumn, pvdQuarter) 每次调用添加一个层级
  • 每个轴都有 ExpandAll、CollapseAll 和 ExpandLevel
  • 小计和总计,带各自的位置和标题
阅读帮助主题
并排显示三个度量值:金额之和、不同客户数和平均利润率

分析

八种聚合,包括去重计数

收入是求和,订单数是计数,但三月份有多少不同的客户购买则是去重计数,这正是财务团队所需的数字。每个数据字段选择自己的聚合方式,因此一个布局可以并排显示销售额之和、不同客户的数量和平均利润率。在字段列表中,值标签上的按钮可一键切换聚合方式。总计始终根据源值计算。

  • TsgcPivotAggregation:pvfSum、pvfCount、pvfAverage、pvfMin 和 pvfMax
  • 用于统计的 pvfCountDistinct、pvfStdDev 和 pvfVar
  • AddDataField('Sales', pvfSum) 添加一个度量值,每个列成员下可以有多个度量值
  • 八种全部包含在免费的社区版中
阅读帮助主题
按销售额排名前 5 的产品加一个“其他”行,成员复选清单处于打开状态

分析 仅限注册版

筛选出重要内容,保留前 N 项

只有当用户能够缩小范围时,大型布局才有用。成员、标签和值筛选可缩减结果,提供从等于到介于、包含等 13 种运算符。前 N 项在每个父级内保留总计最大的成员,并可将其余成员合并为单个“其他”行,因此总计仍然相加一致。对“其他”进行下钻会返回它所包含的每个成员的源数据行。

  • TsgcPivotFilterOperator:pvcEqual、pvcGreater、pvcBetween、pvcContains、pvcBeginsWith 等
  • 用于成员复选清单的 FilterValues 和 FilterExclude,也可通过字段列表使用
  • 用于前 N 项视图的 TopN、TopNOthers 和 OthersCaption
  • SortBy pvsValue 配合 pvoDescending 把最大的排在最前

成员、标签和值筛选以及排序包含在社区版中。带“其他”的前 N 项属于注册版。

阅读帮助主题
AdvancedPivot 演示,带计算所得的利润率字段和占列总计的百分比

分析 仅限注册版

计算字段与占总计百分比

利润率、利润和占比是管理者讨论的数字,但它们很少作为数据库中的列存在。计算字段通过表达式为每个源数据行计算一个值,支持 IF、ROUND、MIN、MAX、ISNULL 和日期函数,然后像其他列一样进行聚合。“值显示方式”可将度量值转换为占行、列或总计的百分比、累计、与基准项的差值或排名。

  • CalculatedFields.Add 返回带 Name 和 Expression 的 TsgcPivotCalculatedField
  • 行级计算:计算所得利润之和就是各利润之和
  • ShowAs:pvwPercentOfRow、pvwPercentOfColumn、pvwPercentOfGrandTotal、pvwRunningTotal、pvwDifferenceFrom、pvwRank
  • ShowAsBaseItem 选择计算差值所依据的成员

社区版不含:这些成员在 SGC_PIVOTGRID_ADVANCED 下编译。

阅读帮助主题

交互

让用户自己找到答案。

交互

用户通过拖放构建自己的报表

新问题不应该需要新版本。在表格旁边放一个字段列表,设置一个属性,用户即可把源列拖入筛选器、列、行和值。拖到值中的文本列执行计数,数值列执行求和,标签上的按钮可切换聚合方式。每个标签都会打开带搜索框的成员复选清单,延迟模式会让更改保持待定,直到用户应用,这对超大数据很有帮助。同样的字段列表也适用于 FireMonkey。

  • 通过 PivotGrid 绑定的 TsgcVCLPivotFieldList 和 TsgcFMXPivotFieldList
  • 四个区域:pvaFilter、pvaColumn、pvaRow 和 pvaData
  • DeferUpdate 和 ApplyChanges 在用户操作完成后只重新计算一次
  • .NET 中的 WinForms、WPF 和 Avalonia 字段列表
  • 支持阿拉伯语和希伯来语的从右到左:行标题区域、列顺序、展开箭头和字段列表已镜像,XLSX 导出会写出从右到左的工作表
阅读帮助主题
按国家和月份的透视表,销售额采用绿色色阶

交互

色阶让热点一目了然

在有人为数字着色之前,数字表格会隐藏背后的故事。格式规则按数值为数据单元格着色:色阶按单元格在度量值最小值与最大值之间的位置,在两种颜色之间渐变,值规则则为符合条件的单元格着色或加粗。同样的规则适用于屏幕以及 PNG 和 SVG 图像,因为两者由同一个渲染器绘制。无需自定义绘制代码。

  • FormatRules 集合中的 TsgcPivotFormatRule,可在对象检查器中编辑
  • 带 MinColor 和 MaxColor 的 pvrColorScale
  • 带运算符、BackColor、ForeColor 和 Bold 的 pvrValue 规则
  • Measure 选择数据字段,Theme 在浅色和深色之间切换
阅读帮助主题
DataSetPivot 演示,表格旁边列出了某个透视单元格背后的订单

交互

下钻到任何数字背后的数据行

当总计看起来不对时,首先要问的是由哪些订单构成。双击单元格或在键盘上按 Enter 即可下钻,引擎会返回聚合到该值中的源数据行,形式为行号,或包含存储中每一列(包括不在布局中的列)的表。DataSetPivot 演示在侧边面板中列出某个单元格背后的订单。

  • 表格的 OnDrillDown,以及用于通过代码触发的 DrillDownCell
  • DrillDown 以 IsgcUITable 的形式返回源数据行
  • GetSourceRows 给出行号,SourceValue 读取某个值
  • 对前 N 项中的“其他”行下钻,会返回它所包含的每个成员的数据行
阅读帮助主题

交互

用自然语言请求布局

用户在 AI 查询栏中或通过你的代码输入“按季度列出销售额前三的国家”这样的问题,TsgcPivotGridAI 会向 AI 提供程序请求布局。任意 LLM 均可使用:TsgcUIAIEventProvider 把每个请求交给你自己的代码,TsgcUIAIChatProvider 则使用 sgcWebSockets 的 TsgcAIChat 组件。只有问题和字段目录会离开应用程序:名称、标题、类型以及每个字段最多 5 个示例值,绝不包含数据行。答案会先对照真实字段进行检查,再通过一次重新计算应用,撤销可恢复之前的布局。

  • 带 Provider 和 PivotGrid 的 TsgcPivotGridAI,适用于 VCL、FireMonkey、WinForms、WPF 和 Avalonia
  • Ask 等待答案,AskAsync 在工作线程上运行,Cancel 可将其停止
  • OnBeforeAsk 可编辑或取消请求,OnLayout 可拒绝答案
  • MaxSampleValues 限制示例值;未知字段会被丢弃,答案上限为 64 KB
  • sgcPivotGridWS 桥接的 TsgcPivotGridAIQuery 仍可通过 Chat 使用,已指定的 Provider 优先于 Chat

每个版本和每个平台均可使用,包括社区版;AI 布局的撤销不在社区版中。sgcWebSockets 提供程序需要注册版和已注册的 sgcWebSockets:Delphi 和 C++ Builder 中为 sgcUICoreWS,.NET 中为 esegece.sgcUICore.sgcWebSockets 包。

阅读帮助主题

输出

文件、浏览器、图表或服务器任务。

GridToPivotToChart 演示:表格行、透视表和 sgcCharts 图表分在三个窗格中

输出

导出所见内容,或将其绘制成图表

数据透视表往往是报表的开始,而不是终点。每种导出都按用户安排的方式写出视图,包括其展开的层级和筛选:CSV 用于电子表格,JSON 用于其他系统,HTML 用于浏览器或邮件,PNG 和 SVG 用于文档。结果同时也是 sgcCharts 可直接读取的表,因此 GridToPivotToChart 演示无需复制任何数据,即可从表格行到透视表再到图表。流与文件同样适用。

  • SaveToCSV、SaveToJSON 和 SaveToHTML 保存到文件或流
  • SaveToPNG 和 SaveToSVG,可选指定尺寸
  • TsgcPivotGridRenderer 无需窗口即可绘制,适用于服务器或 Linux64
  • ResultTable 以 IsgcUITable 的形式向 sgcCharts 提供可见结果
阅读帮助主题
布局列表,包含“按地区的销售额”和“按产品的利润率”两个已保存的视图

输出 仅限注册版

保存布局,一次调用即可恢复

高级用户会反复构建相同的视图:周一按地区看销售额,月末按产品看利润率。布局持久化会将整个布局写成 JSON,包括字段、区域、分组、聚合、排序、筛选和总计,并通过一次重新计算加载回来。可以把它保存在文件、数据库字段或用户配置文件中,提供命名视图列表,或把一个表格的布局复制到另一个表格。

  • 表格和引擎上的 SaveLayoutToFile 和 LoadLayoutFromFile
  • 用于数据库或设置存储的 SaveLayoutToString 和 LoadLayoutFromString
  • 表格版本还会保留用户更改过的列宽
  • 使用 LoadLayoutFromString(SaveLayoutToString) 在表格之间复制布局

社区版不含。

阅读帮助主题

无障碍

面向屏幕阅读器的 UI Automation、键盘和高对比度,无需任何设置。

无障碍

连同标题一起公开的数据透视表

sgcPivotGrid 将其内容作为带有可展开和折叠的行标题和列标题、数据单元格和总计的表格向 Microsoft UI Automation 公开。字段列表按区域公开为字段列表,因此屏幕阅读器用户也可以构建数据透视表。

  • 方向键、Home、End、Page Up 和 Page Down 移动焦点单元格,Left 和 Right(或加号和减号键)折叠和展开标题
  • 在字段列表中,Up 和 Down 移动字段焦点,Ctrl+1 到 Ctrl+4 把字段移到行、列、值或筛选器,Ctrl+Up 和 Ctrl+Down 重新排序,Space 切换,Del 删除
  • 字段列表按键取代了用鼠标拖动字段
  • 可见的焦点环,在 Windows 高对比度主题下,数据透视网格使用系统颜色绘制

无障碍功能在每个版本中默认开启,包括免费的社区版,可用于 VCL(Delphi 和 C++Builder 从 Delphi 7 到 Delphi 13 的每个版本)、Windows 上的 FireMonkey,以及 WinForms、WPF 和 Avalonia。在 Delphi 和 C++Builder 中,AccessibleName 和 AccessibleDescription 设置向 UI Automation 公开的名称和说明,在 .NET 中,各框架标准的无障碍名称和帮助文本起同样的作用。请参见无障碍符合性报告。

阅读帮助主题

查看 sgcPivotGrid 的实际效果

sgcUI 套件演示中的 sgcPivotGrid:使用内置模拟数据、可离线运行的完整应用程序。

对照预算实测

QA 性能组在发布版本上运行这些场景,取固定数据上五次运行的中位数。这些数字是每个场景必须满足的预算,已发布在帮助中。

测量项结果条件
重新计算 1,000,000 行(2 个行字段、1 个列字段、1 个求和)100 msWin64 发布版本,QA 预算
重新计算 1,000,000 行(2 个行字段、1 个列字段、1 个求和)160 msWin32 发布版本,QA 预算
AppendRow 追加 1,000,000 行(3 个文本值、1 个浮点值和 1 个日期值)900 msWin64 发布版本,QA 预算
AppendRow 追加 1,000,000 行(3 个文本值、1 个浮点值和 1 个日期值)1,400 msWin32 发布版本,QA 预算

来源:记录这些数据的帮助主题。

谁在用 sgcPivotGrid 构建应用

ERP 和业务线开发人员

ERP 内部的销售与财务分析

让会计和销售人员无需导出到电子表格,即可对订单表进行透视。数据集数据源将透视表绑定到您窗体所用的同一个 TDataSet,并跟随每次提交的编辑。日期按年、季度和月分组,色阶标出表现较弱的地区,双击即可列出可疑总计背后的发票,因此问题在您的应用程序内部就能得到解答。

  • 带实时更新的数据集数据源
  • 日期分组
  • 色阶
  • 下钻
运行 DataSetPivot 演示

分析师与财务主管

面向高级用户的自助分析

高级用户想要探索,而不是提交变更请求。字段列表让他们可以在行、列、筛选器和值之间拖动字段,成员复选清单缩小数据范围,已保存的布局则找回他们最喜欢的视图。借助 AI 桥接,他们还可以输入一个问题并获得自动构建的布局,答案不符合预期时,一键即可撤销。

  • 字段列表
  • 带“其他”的前 N 项
  • 布局持久化
  • AI 布局
运行 AdvancedPivot 演示

后台与报表服务

服务器上的定时报表

夜间汇总不需要屏幕。引擎和无界面渲染器可在服务或控制台应用程序中运行,在 Windows 上,或自 Delphi 10.2 起在 Linux64 上。加载当天的数据行,应用已保存的布局,并将透视表写成 PNG、SVG、HTML 或 CSV,随时可作为邮件附件,或发布到内部网页面。

  • 无窗口的 TsgcPivotEngine
  • TsgcPivotGridRenderer
  • HTML 和 CSV 导出
  • Linux64
运行 HeadlessReport 演示

几行代码构建数据透视表

Delphi、C++ Builder 和 C# 中使用相同的 API:一次加载 100,000 行,然后按季度布局地区,最大的地区排在最前。

带数据透视表和字段列表的 VCL 窗体:一次重新计算加载 100,000 行,按季度显示地区,最大的地区排在最前。

unit frmSales;

interface

uses
  Classes, Controls, Forms, SysUtils,
  sgcUICore_Theme, sgcPivotGrid_Types, sgcPivotGrid_Fields, sgcPivotGrid_VCL,
  sgcPivotGrid_FieldList_VCL;

type
  TFormSales = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

implementation

procedure TFormSales.FormCreate(Sender: TObject);
const
  Regions: array[0..3] of string = ('North', 'South', 'East', 'West');
var
  vGrid: TsgcVCLPivotGrid;
  vList: TsgcVCLPivotFieldList;
  vField: TsgcPivotField;
  i: Integer;
begin
  vGrid := TsgcVCLPivotGrid.Create(Self);
  vGrid.Parent := Self;
  vGrid.Align := alClient;
  vGrid.Theme := utDark;
  vList := TsgcVCLPivotFieldList.Create(Self);
  vList.Parent := Self;
  vList.Align := alRight;
  vList.PivotGrid := vGrid;
  // load 100,000 rows, one recalculation at EndLoad
  vGrid.Pivot.BeginLoad(True);
  try
    vGrid.Pivot.DefineColumn('Region', pvtText);
    vGrid.Pivot.DefineColumn('Date', pvtDateTime);
    vGrid.Pivot.DefineColumn('Sales', pvtFloat);
    for i := 1 to 100000 do
      vGrid.Pivot.AppendRow([Regions[i mod 4], EncodeDate(2025, 1, 1) + i mod 365,
        10 + (i mod 97) * 1.5]);
  finally
    vGrid.Pivot.EndLoad;
  end;
  // layout: regions by quarter, the largest region first, shown as % of total
  vGrid.Pivot.BeginUpdate;
  try
    vField := vGrid.Pivot.AddField('Region', pvaRow);
    vField.SortBy := pvsValue;
    vField.SortOrder := pvoDescending;
    vGrid.Pivot.AddField('Date', pvaColumn, pvdQuarter).Caption := 'Quarter';
    vField := vGrid.Pivot.AddDataField('Sales', pvfSum);
    vField.ShowAs := pvwPercentOfGrandTotal;
  finally
    vGrid.Pivot.EndUpdate;
  end;
  vGrid.SaveToHTML(ExtractFilePath(ParamStr(0)) + 'sales.html');
end;

end.

阅读帮助主题 →

C++ Builder 中的同一个透视表,使用软件包生成的头文件。

#include <vcl.h>
#pragma hdrstop
#include "sgcUICore_Theme.hpp"
#include "sgcPivotGrid_Types.hpp"
#include "sgcPivotGrid_Fields.hpp"
#include "sgcPivotGrid_VCL.hpp"
#include "sgcPivotGrid_FieldList_VCL.hpp"

void __fastcall BuildSalesPivot(TForm *Form)
{
	TsgcVCLPivotGrid *vGrid = new TsgcVCLPivotGrid(Form);
	vGrid->Parent = Form;
	vGrid->Align = alClient;
	vGrid->Theme = utDark;
	TsgcVCLPivotFieldList *vList = new TsgcVCLPivotFieldList(Form);
	vList->Parent = Form;
	vList->Align = alRight;
	vList->PivotGrid = vGrid;
	// load 100,000 rows, one recalculation at EndLoad
	static const String Regions[4] = {"North", "South", "East", "West"};
	Variant vValues[3];
	vGrid->Pivot->BeginLoad(true);
	try {
		vGrid->Pivot->DefineColumn("Region", pvtText);
		vGrid->Pivot->DefineColumn("Date", pvtDateTime);
		vGrid->Pivot->DefineColumn("Sales", pvtFloat);
		for (int i = 1; i <= 100000; i++) {
			vValues[0] = Regions[i % 4];
			vValues[1] = TDateTime((double)EncodeDate(2025, 1, 1) + i % 365);
			vValues[2] = 10 + (i % 97) * 1.5;
			vGrid->Pivot->AppendRow(vValues, 2);
		}
	}
	__finally {
		vGrid->Pivot->EndLoad();
	}
	// layout: regions by quarter, the largest region first, shown as % of total
	vGrid->Pivot->BeginUpdate();
	try {
		TsgcPivotField *vField = vGrid->Pivot->AddField("Region", pvaRow);
		vField->SortBy = pvsValue;
		vField->SortOrder = pvoDescending;
		vGrid->Pivot->AddField("Date", pvaColumn, pvdQuarter)->Caption = "Quarter";
		vField = vGrid->Pivot->AddDataField("Sales", pvfSum);
		vField->ShowAs = pvwPercentOfGrandTotal;
	}
	__finally {
		vGrid->Pivot->EndUpdate();
	}
	vGrid->SaveToHTML(ExtractFilePath(ParamStr(0)) + "sales.html");
}

阅读帮助主题 →

适用于 WinForms 的 C# 版本。它仅使用免费社区版的功能。

using System;
using System.Windows.Forms;
using esegece.sgcPivotGrid;
using esegece.sgcUICore;

namespace SalesPivot
{
    internal class MainForm : Form
    {
        private static readonly string[] Regions = { "North", "South", "East", "West" };

        public MainForm()
        {
            Text = "Sales pivot";
            var grid = new TsgcWinFormsPivotGrid { Dock = DockStyle.Fill, Theme = TsgcUITheme.utDark };
            var list = new TsgcWinFormsPivotFieldList { Dock = DockStyle.Right, Width = 260, PivotGrid = grid, Theme = TsgcUITheme.utDark };
            Controls.Add(grid);
            Controls.Add(list);

            // load 100,000 rows, one recalculation at EndLoad
            grid.Pivot.BeginLoad();
            try
            {
                grid.Pivot.DefineColumn("Region", TsgcPivotDataType.pvtText);
                grid.Pivot.DefineColumn("Date", TsgcPivotDataType.pvtDateTime);
                grid.Pivot.DefineColumn("Sales", TsgcPivotDataType.pvtFloat);
                for (int i = 1; i <= 100000; i++)
                    grid.Pivot.AppendRow(Regions[i % 4], new DateTime(2025, 1, 1).AddDays(i % 365), 10 + (i % 97) * 1.5);
            }
            finally { grid.Pivot.EndLoad(); }

            // layout: regions by quarter, the largest region first
            grid.Pivot.BeginUpdate();
            try
            {
                var region = grid.Pivot.AddField("Region", TsgcPivotArea.pvaRow);
                region.SortBy = TsgcPivotSortBy.pvsValue;
                region.SortOrder = TsgcPivotSortOrder.pvoDescending;
                grid.Pivot.AddField("Date", TsgcPivotArea.pvaColumn, TsgcPivotDateGrouping.pvdQuarter).Caption = "Quarter";
                grid.Pivot.AddDataField("Sales", TsgcPivotAggregation.pvfSum).DisplayFormat = "#,##0";
            }
            finally { grid.Pivot.EndUpdate(); }
            grid.SaveToHTML("sales.html");
        }

        [STAThread]
        static void Main() { Application.EnableVisualStyles(); Application.Run(new MainForm()); }
    }
}
dotnet add package esegece.sgcPivotGrid.WinForms

阅读帮助主题 →

Delphi 和 C++ Builder 示例将值显示为占总计的百分比(ShowAs),这是注册版功能。C# 示例仅使用免费社区版的功能。

运行 sgcPivotGrid 演示

预编译的演示可执行文件位于 sgcUI_bin.zip,无需安装。每个演示的源代码随软件包提供,适用于 Delphi、C++ Builder 和 .NET。

SalesPivot

SalesPivot

100,000 行销售数据,带日期分组、色阶、字段列表和导出。SalesPivotFMX 是其 FireMonkey 对应版本。

DataSetPivot

DataSetPivot

一个订单的 TClientDataSet:编辑一行,透视表随之更新;双击单元格可列出其订单。

MillionRows

MillionRows

加载并透视 1,000,000 行生成的数据,并打印所用时间。

AdvancedPivot

仅限注册版 AdvancedPivot

计算字段、值显示方式、带“其他”的前 N 项,以及保存和加载布局。

GridToPivotToChart

GridToPivotToChart

sgcGrid 中的行为透视表提供数据,透视结果再为 sgcCharts 图表提供数据,无需复制数据。

HeadlessReport

无需窗口即可构建透视表,并将其渲染为 PNG 文件。

仅限注册版 AskYourPivot

在 AI 查询栏中输入一个问题即可获得布局,通过带预设答案提供程序的 TsgcPivotGridAI 或 sgcWebSockets 的 TsgcAIChat 实现,并支持撤销。

预编译演示

每款 sgcUI 产品的可直接运行的可执行文件,无需安装。

下载 sgcUI_bin.zip →

sgcPivotGrid 包含在哪些版本中

sgcPivotGrid 是 sgcUI Enterprise 的一部分,也可单独购买。sgcPivotGrid 还包含在 All-Access 套餐中。

sgcPivotGrid 单品包

€249 / 开发者,含完整源代码,1 年更新。

购买 sgcPivotGrid → 查看价格 →

sgcUI Enterprise

全部 14 款 sgcUI 产品,起价 €699。

查看 Enterprise →

.NET

.NET 版本价格相同。免费的社区版以 esegece.sgcPivotGrid.Community 的名称提供在 NuGet 上。

查看价格 →

免费的社区版是 NuGet 上的 esegece.sgcPivotGrid.Community。下表列出了它包含的内容。

功能社区版(免费)注册版
数据透视表和字段列表(VCL、FireMonkey、WinForms、WPF、Avalonia)✓✓
八种聚合,包括 CountDistinct、StdDev 和 Var✓✓
日期分组、小计和总计✓✓
筛选、排序和下钻✓✓
条件格式和色阶✓✓
导出为 CSV、JSON 和 HTML,无界面 PNG 和 SVG✓✓
使用任意 LLM 和 AI 查询栏的 AI 透视布局✓✓
计算字段−✓
值显示方式−✓
带“其他”的前 N 项−✓
布局持久化−✓
AI 布局的撤销、sgcPivotGridWS 桥接和 sgcWebSockets AI 提供程序−✓

支持的框架与平台

sgcPivotGrid 中的组件

组件功能
TsgcVCLPivotGrid、TsgcFMXPivotGrid适用于 VCL 和 FireMonkey 的数据透视表控件(FMX 自 XE6 起)。
TsgcVCLPivotFieldList、TsgcFMXPivotFieldList让用户更改布局的拖放字段列表。
TsgcPivotEngine计算引擎,可通过 Grid.Pivot 访问,也可在没有窗口的情况下使用。
TsgcPivotSource_DataSet、TsgcPivotSource_Table透视 TDataSet,或任何实现了 sgcUI 表接口的表。
TsgcPivotGridRenderer适用于服务器和报表的无界面 PNG 和 SVG 输出。
TsgcPivotFormatRule色阶等条件格式规则。
TsgcPivotGridAI由任意 AI 提供程序把自然语言问题转换为透视布局,每个版本和每个平台均可使用。
TsgcVCLAIQueryBar, TsgcFMXAIQueryBarsgcUICore 的 AI 查询栏:输入问题,查看已应用的内容,取消和撤销。
TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS)AI 提供程序:通过一个事件接入任意 LLM,或使用 sgcWebSockets 的 TsgcAIChat(仅限注册版)。
TsgcPivotGridAIQuery (sgcPivotGridWS)带 Chat 属性的 TsgcPivotGridAI,用于 sgcWebSockets 的 TsgcAIChat。仅限注册版。
目标组件平台
Delphi 7 到 13,VCLTsgcVCLPivotGridWin32 与 Win64
Delphi XE6 到 13,FireMonkeyTsgcFMXPivotGridWindows、macOS、iOS 和 Android
C++ Builder 2007 到 13VCL 和 FMX 数据透视表生成的 .hpp 头文件和静态库
Delphi 10.2 到 13,框架无关引擎、数据源、导出、布局 JSON、无界面渲染器Linux64,例如在服务器上构建透视报表
.NET Framework 4.7.2、.NET 8、9 和 10TsgcWinFormsPivotGrid、TsgcWpfPivotGrid、TsgcAvaloniaPivotGridWinForms、WPF、Avalonia,无界面 PNG 和 SVG

常见问题解答

引擎专为大数据而构建:类型化列存储、每次重新计算只需一遍,以及虚拟绘制。Win64 上的 QA 预算是重新计算 1,000,000 行 100 ms,追加这些行 900 ms。布局的大小也很重要:超过 MaxCells(默认 5,000,000 个单元格)的布局会引发错误,因此请对日期分组或使用前 N 项。

可以。TsgcPivotSource_DataSet 将任意 TDataSet 复制到引擎中,在 LiveUpdates 为 True 期间,每次提交后都会重新加载。对于批量编辑,请先关闭它,并在结束时调用 Load。DataSetPivot 演示展示了带实时更新和下钻的 TClientDataSet。

不需要。sgcPivotGrid 是您应用程序内部的内存引擎。它从数据集、表或您自己的代码中读取行,自行完成聚合,既不需要数据库服务器,也不需要设计多维数据集。

四项高级功能:计算字段、值显示方式、带“其他”的前 N 项和布局持久化,以及 sgcPivotGridWS 桥接、sgcWebSockets AI 提供程序和 AI 布局的撤销。使用你自己提供程序的 AI 透视布局、所有聚合、日期分组、筛选、排序、下钻、格式规则、导出、字段列表以及无界面 PNG 和 SVG 输出都包含在社区版中。

只发送问题和字段目录:字段名称、标题、类型以及每个字段最多 5 个示例值,绝不包含数据行。答案会对照真实字段进行验证,未知字段和值会被丢弃,没有可用布局时不会有任何改动。它在每个版本中都可使用,只需把任意提供程序接入 TsgcUIAIEventProvider;现成的 TsgcUIAIChatProvider 需要注册版和已注册的 sgcWebSockets。

可以。表格和引擎通过 ResultTable 以 IsgcUITable 的形式公开可见结果。把 sgcCharts 表数据源的 Table 属性设置为该数据透视表,图表就会绘制用户所排布的内容。GridToPivotToChart 演示串联了 sgcGrid、sgcPivotGrid 和 sgcCharts。

可以。TsgcPivotGridRenderer 无需窗口即可将结果绘制为 PNG 或 SVG,引擎还可导出 CSV、JSON 和 HTML。在 Linux64 上,框架无关的单元自 Delphi 10.2 起即可编译:引擎、数据源、导出、布局 JSON 和渲染器。

sgcPivotGrid 帮助

3,000+开发者
20+年
761+组件
30+API 集成
5平台
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策

立即试用 sgcPivotGrid

sgcUI 试用版包含 sgcPivotGrid 和所有其他 sgcUI 产品。