
用几行易读的代码编写一份完整的报表。
TsgcReportBuilder将样式、页面、带区和项目描述为一条流式链,可随您的项目一起编译、比较和重构。Style、Page、GroupHeader、MasterData、GroupFooter和PageFooter读起来就像版面布局本身。SaveToPDF、SaveToXLSX、SaveToCSV和SaveToPNG直接从构建器保存。
用流式链式调用在代码中构建报表,或在运行时加载 JSON 定义,支持分组、小计、主从和条形码。可从桌面预览、Windows 服务或 Linux64 守护进程输出带标签的 PDF、Excel、CSV 或 PNG。适用于 Delphi、C++ Builder 和 .NET 的报表引擎,附带源代码。

布局可纳入版本控制,数据来自任何地方,为每位读者提供文件,引擎无需窗口即可运行。sgcReports 在一个产品中涵盖了这一切。
流式构建器或 JSON 定义,都可与您的项目一同纳入版本管理。
带主从关系的数据集、JSON 数组,或来自您自己事件的行。
一份准备好的报表即可输出带标签的 PDF、PDF/A-3、XLSX、CSV 和 PNG。
桌面预览、Windows 服务、Linux64 守护进程和 HTTP 端点。
截取自试用版附带的 sgcReports 演示。

TsgcReportBuilder 将样式、页面、带区和项目描述为一条流式链,可随您的项目一起编译、比较和重构。Style、Page、GroupHeader、MasterData、GroupFooter 和 PageFooter 读起来就像版面布局本身。SaveToPDF、SaveToXLSX、SaveToCSV 和 SaveToPNG 直接从构建器保存。
rbtReportTitle 到 rbtReportSummary,包含分组页眉与页脚以及列标题。GroupExpression 在分组值变化时断开分组;嵌套分组可实现两级或更多级。StartNewPage、RepeatOnEveryPage 和 KeepTogether 控制分页流程,TotalPages 可打印“第 2 页,共 7 页”。
TsgcReportDataSetSource 可绑定任意 TDataSet(包括 FireDAC),并通过 MasterFields 和 DetailFields 将明细行关联到其主表。TsgcReportJSONSource 读取 JSON 字符串或文件,RecordsPath 选取数组。TsgcReportEventSource 通过 OnFirst、OnNext 和 OnGetValue 从您的代码中获取行。
PDFUA 在 TsgcReportPDFExport 上默认为 True:带逻辑阅读顺序的带标签 PDF/UA-1。AltText 和 TagRole 项目上的这两个属性用于描述图像和标题。PDFA 设为 rpaA3b 或 rpaA3a。JSON 定义、所有导出格式、条形码和由 SQL 驱动的报表,直接来自演示。

sgcReportLoadFromJSON 在运行时加载定义,出错时会指出 JSON 路径。

Sum 和 FormatFloat 可用于任意带区,条形码从 Code 128 到二维码均以矢量方式绘制。
每个区域一个页眉,每笔销售一行,每个区域一个小计,保存为 PDF、XLSX 和 CSV。Delphi、C++ Builder 和 C# 中的 API 相同。
dotnet add package esegece.sgcReports
uses
Classes, SysUtils,
sgcReports_Types, sgcReports_Model, sgcReports_Data, sgcReports_Fluent;
const
CS_SALES = '[' +
'{"Region":"East","Customer":"Acme Corp","Amount":1450.00},' +
'{"Region":"East","Customer":"Blue Harbor","Amount":600.00},' +
'{"Region":"North","Customer":"Nordic Labs","Amount":2100.75},' +
'{"Region":"North","Customer":"Fjord Ltd","Amount":880.20}]';
CS_TOTAL = '[FormatFloat(''#,0.00'', Sum(Sales.Amount))]';
procedure ExportSalesReport(const aFolder: string);
var
oSales: TsgcReportJSONSource;
oBuilder: TsgcReportBuilder;
begin
oSales := TsgcReportJSONSource.Create(nil);
oBuilder := TsgcReportBuilder.Create;
try
oSales.SourceName := 'Sales';
oSales.JSON := CS_SALES;
oBuilder.Title('Sales by region').Author('eSeGeCe').Units(ruMillimeters)
.Style('Base').Font('Arial', 10).EndStyle
.Style('Group').Font('Arial', 11).Bold.BackColor($EEEEEE).EndStyle
.Page.Paper(rpsA4).Margins(15)
// one header per region, one line per sale, a subtotal per region
.GroupHeader('Sales.Region', 9).Style('Group')
.Text('Region: [Sales.Region]', 0, 1, 180, 7).TagRole(rtrHeading2).EndBand
.MasterData('Sales', 6).Style('Base')
.Text('[Sales.Customer]', 2, 0, 120, 6)
.Text('[Sales.Amount]', 130, 0, 50, 6).AlignRight.Format('#,0.00').EndBand
.GroupFooter(9).Style('Base')
.Text('Region total ' + CS_TOTAL, 80, 1, 100, 6).AlignRight.Bold.EndBand
.PageFooter(8).Style('Base')
.Text('Page [Page] of [TotalPages]', 0, 1, 180, 6).AlignCenter.EndBand
.EndPage.Data(oSales);
// accessible PDF (PDF/UA is on by default), plus the same data as Excel
oBuilder.SaveToPDF(IncludeTrailingPathDelimiter(aFolder) + 'sales.pdf');
oBuilder.SaveToXLSX(IncludeTrailingPathDelimiter(aFolder) + 'sales.xlsx');
oBuilder.SaveToCSV(IncludeTrailingPathDelimiter(aFolder) + 'sales.csv');
finally
oBuilder.Free;
oSales.Free;
end;
end;
可单独购买 sgcReports,也可在 sgcUI Enterprise 中与其他所有 sgcUI 产品一起获得,共用同一个主题和运行时。均附带源代码。
sgcReports 使用 sgcPDF 引擎绘制 PDF 输出和条形码,因此所有配置都需要 sgcPDF。对于 .NET,esegece.sgcReports.Community 在 NuGet 上免费提供。sgcReports 也包含在 All-Access 套餐。
sgcReports 通过 sgcPDF 写出 PDF 文件,并打印其他 sgcUI 产品在屏幕上显示的内容,从筛选后的表格到渲染后的地图。

每个 sgcReports 文件背后的 PDF 引擎:字体、带标签的 PDF、PDF/A 和条形码绘制。

用户在实时表格中筛选和排序数据,然后将所选内容原样打印为分组报表。

渲染一条路线或一个区域,并将其打印在送货单或事故报告中。
Standard
Professional 增加
Enterprise 增加