ToolUp.Reporting.Core 0.22.0

Prefix Reserved
dotnet add package ToolUp.Reporting.Core --version 0.22.0
                    
NuGet\Install-Package ToolUp.Reporting.Core -Version 0.22.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ToolUp.Reporting.Core" Version="0.22.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ToolUp.Reporting.Core" Version="0.22.0" />
                    
Directory.Packages.props
<PackageReference Include="ToolUp.Reporting.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ToolUp.Reporting.Core --version 0.22.0
                    
#r "nuget: ToolUp.Reporting.Core, 0.22.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ToolUp.Reporting.Core@0.22.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ToolUp.Reporting.Core&version=0.22.0
                    
Install as a Cake Addin
#tool nuget:?package=ToolUp.Reporting.Core&version=0.22.0
                    
Install as a Cake Tool

ToolUp.Reporting

Companion package providing typed-template document generation for applications built on ToolUp.Platform. Ships the IReportRenderer interface, default MarkdownRenderer + HtmlRenderer (zero-deps), IReportTemplateStore over IEntityStore, the ReportApi ToolUp.Remoting endpoint, and ReportingCompose (registers the renderer registry + API handler against a ServerApp).

Each output format that needs a real renderer (PDF / DOCX / XLSX) lives in its own sub-companion under src/Reporting/ so a deployment that only needs PDF doesn't pay for the OpenXml dep, and vice versa. Pptx is the exception — deck output is served by a downstream document-emission tier rather than by a renderer here; see Deck export below.

Apache-2.0; part of the ToolUp Platform SDK.

Why a separate companion

Two reasons it doesn't live in ToolUp.Platform:

  1. Vendor SDK weight. PDF / DOCX / XLSX renderers pull in QuestPDF or DocumentFormat.OpenXml; deployments that don't need document generation shouldn't pay for those deps.
  2. Audit + storage integration. The renderer composes with IEntityStore (template persistence), IDataObjectStore (rendered-blob storage with versioning), and IAuditLog (ReportRendered events). Keeping that wiring inside a companion (rather than threading it into the core SDK) preserves the "core ships only opinion-light substrate" principle.

Activation

open ToolUp.Reporting

ServerApp.empty
|> ServerApp.addModules [ /* your modules */ ]
|> ReportingServerApp.run

ReportingServerApp.run is a flat superset of ServerApp.run — every existing capability passes through, plus the reporting endpoints and renderer registry.

Built-in renderers

  • MarkdownRenderer — pure F#, zero deps. Templates use {{key}} placeholders; {{#each items}} … {{/each}} for tables.
  • HtmlRenderer — pure F# + System.Web.HttpUtility.HtmlEncode. Same placeholder syntax; values HTML-encoded by default.

Sub-companions (separate NuGets)

  • ToolUp.Reporting.Pdf — QuestPDF-backed (community-licensed under $1M revenue/yr).
  • ToolUp.Reporting.Docx — DocumentFormat.OpenXml.
  • ToolUp.Reporting.Xlsx — DocumentFormat.OpenXml. Includes the cell-address-map binding mode (Map<CellAddress, ExcelCellValue> shape that writes values directly into specific cells without template-side {{key}} markup) — load-bearing for the Excel-to-ToolUp converter portal's runtime export path.

Each sub-companion ships in its own NuGet so deployments compose only what they need. There is no ToolUp.Reporting.Pptx, and there will not be one — see below.

Deck export

TemplateFormat enumerates Pptx, and nothing here renders it. A render request for that format refuses with the typed RenderError.FormatServedByDeckTier, which is deliberately distinct from NoRendererForFormat: there is no package to add. Deck output is produced by a downstream document-emission tier that reads the deployment's exported result set (narrative + fact refs + provenance) and emits typed deck parts — a useful deck being a regenerable projection of governed results rather than a rendered template.

This companion's contribution to that tier is the chart-artifact handoff (ChartArtifact): the deployment's own deterministic chart grammar, exposed as content-hashed, provenance-stamped embeddable artifacts. Full rationale and the composition shape: docs/platform/reporting.md.

Licensed under Apache-2.0. Part of the ToolUp Platform SDK — see github.com/ToolUp-Forge/toolup-forge for full documentation.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on ToolUp.Reporting.Core:

Package Downloads
ToolUp.Reporting.HtmlPdf

ToolUp.Reporting HTML→PDF rendering sub-companion — renders HTML report templates (print CSS respected: @page size/margins, page breaks, headers/footers) to paginated PDF via Playwright / headless Chromium, implementing IReportRenderer and registering through the standard RendererRegistry path. Placeholder semantics inherited from the shipped HtmlRenderer. Requires Chromium in the deployment image — see the README.

ToolUp.Reporting.Server

ToolUp.Reporting Server — IReportTemplateStore (over IEntityStore), in-process RendererRegistry, ReportApi Fable.Remoting interface + handler factory, ReportingCompose. Depends on ToolUp.Platform.Server + ToolUp.Reporting.Core.

ToolUp.Reporting.Xlsx

ToolUp.Reporting XLSX rendering sub-companion — fills .xlsx report templates in two binding modes: {{key}} placeholder tokens in cell text, and a cell-address map ("Sheet1!B7" keys) that writes values directly into named cells of a visually-authored template, preserving each target cell's number formatting. Whole-cell numeric tokens write native numeric cells; formulas are left untouched and the workbook is marked for full recalculation on open. Implements IReportRenderer and registers through the standard RendererRegistry path.

ToolUp.Reporting.Docx

ToolUp.Reporting DOCX rendering sub-companion — fills .docx report templates ({{key}} placeholder tokens in document text) through ToolUp.OpenXml's structural model, so styles, numbering, tables and untouched parts round-trip intact. Implements IReportRenderer and registers through the standard RendererRegistry path. Table-kind placeholders occupying a whole paragraph render as native Word tables.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.22.0 46 8/27/2026
0.21.0 62 8/26/2026
0.20.1 116 8/20/2026
0.20.0 129 8/19/2026