CanopyX.Html
0.3.4
See the version list below for details.
dotnet add package CanopyX.Html --version 0.3.4
NuGet\Install-Package CanopyX.Html -Version 0.3.4
<PackageReference Include="CanopyX.Html" Version="0.3.4" />
<PackageVersion Include="CanopyX.Html" Version="0.3.4" />
<PackageReference Include="CanopyX.Html" />
paket add CanopyX.Html --version 0.3.4
#r "nuget: CanopyX.Html, 0.3.4"
#:package CanopyX.Html@0.3.4
#addin nuget:?package=CanopyX.Html&version=0.3.4
#tool nuget:?package=CanopyX.Html&version=0.3.4
CanopyX
Interactive views of your own records, written in C#: tree grids, data grids, pivots, boards, calendars, plans, status matrices, change reviews and guided flows. Save a report that opens from disk, serve the view from your app, or render it as a script-free table for email and print.
Live demos · Documentation · Getting started · GitHub

Pick a view
Get started
dotnet add package CanopyX.Html
CanopyX.Html brings in CanopyX and the browser assets. Install CanopyX alone when you only need the model, the bundle writer or the script-free renderer.
A report that opens from disk
using CanopyX;
using CanopyX.Html;
var inventory = new CanopyDataGridView("inventory", "Inventory");
inventory.Columns.Add(new CanopyColumn("name", "Name") { Sortable = true });
inventory.Columns.Add(new CanopyColumn("size", "Size") { Kind = CanopyColumnKind.Number, Sortable = true });
foreach (var (name, bytes) in new[] { ("Archive", 2048L), ("Documents", 512L) })
{
var row = new CanopyGridRow(name);
row.Cells["name"] = name;
row.Cells["size"] = new CanopyCell(bytes) { Text = $"{bytes:N0} bytes" };
inventory.Rows.Add(row);
}
inventory.SaveHtmlPage("inventory.html");
Open inventory.html in any browser. It carries its own runtime and data, so you can attach it to a ticket or put it on a file share. Numeric values drive sorting; Text is what the reader sees.
A file explorer
var files = new CanopyTreeView("files", "Project files") { Search = new CanopySearchOptions() };
files.Columns.Add(new CanopyColumn("name", "Name") { Sortable = true });
files.Columns.Add(new CanopyColumn("size", "Size") { Kind = CanopyColumnKind.Number, Sortable = true });
var projects = new CanopyNode("projects", "Projects");
var report = new CanopyNode("quarterly-report", "Quarterly report.pdf");
report.Cells["size"] = new CanopyCell(2048L) { Text = "2 KiB" };
projects.Children.Add(report);
files.Roots.Add(projects);
files.SaveHtmlPage("files.html"); // one file
files.SaveHtmlBundle("file-report"); // or a folder that loads branches on demand
A table for email and print
using CanopyX.Rendering;
string table = CanopyStaticHtml.RenderGrid(inventory);
The result is an HTML table with inline styles and no scripts, ready for a mail body, a print layout or Word.
Choose a delivery
| You want | Write | What you get |
|---|---|---|
| One file to attach or archive | view.SaveHtmlPage("report.html") |
Data and runtime in a single page |
| A big tree or grid on a file share | view.SaveHtmlBundle("report") |
A folder whose branches and rows load as the reader scrolls |
| Millions of database rows | CanopyX.Data + CanopyX.AspNetCore |
Paging, filters, summaries, export and edits answered by your server |
| A table in an email | CanopyStaticHtml.Render(view) |
A script-free table that survives mail clients |
Guides
- Getting started: a file explorer and an inventory table, step by step.
- Reporting grids: grouping, filters, aggregates, presenters and export.
- Email and print and delivery modes.
- Server-side data for .NET:
CanopyX.DataandCanopyX.AspNetCore. - Calendar, board, plan, matrix, change views and guided flows.
- Editing, conditional formatting, label packs and security.
Requirements
| Target | Support |
|---|---|
| .NET 8 and .NET 10 | Windows, Linux and macOS |
| .NET Standard 2.0 | Compatible .NET applications |
| .NET Framework 4.7.2 | Windows |
The packages add no third-party runtime dependencies, and generating a report needs no Node.js, npm or build step.
Community and license
CanopyX is an Evotec project, licensed under MIT. Questions and feedback are welcome in the Evotec community on Discord. More Evotec projects are at evotec.xyz.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
NuGet packages (1)
Showing the top 1 NuGet packages that depend on CanopyX.Html:
| Package | Downloads |
|---|---|
|
HtmlForgeX.CanopyX
Optional CanopyX integration for HtmlForgeX. Hosts tree grids, flat data grids and materialized report explorers, with document-managed assets, the Evotec theme and script-free grid snapshots. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Virtual tree and flat grids, typed query controls, saved views, scoped CSV and clipboard exports, host-governed Office exports and details, and page, fragment, bundle, and asset writers.













