Table of Contents

What ReportWright supports

ReportWright is a designer, a viewer and a host over the DocWright.Reporting engine. The engine decides what a report can contain and how it renders; this page says what ReportWright adds on top, what it refuses, and where the pinned engine (DocWright 1.4.0, the package pin) leaves a gap that a consumer will notice. The engine's own tables are DocWright's COMPAT.md sections "Report processing", "Report pagination" and "Report viewing and export"; nothing there is restated here unless ReportWright changes it.

Status marks: ✅ supported · ⚠️ supported with a stated difference · ❌ refused, with the reason.

Files

Area Status Notes
RDL 2008, 2010, 2016 and .rdlc ✅ Read, edited and saved in the file's own schema version; a 2008 file stays 2008. New reports are 2016.
RDL 2005 ⚠️ Read and viewed. The designer edits it, with the entries a 2005 file cannot hold disabled (their tooltip names the needed version). Table, Matrix and List are not converted to Tablix (register row U-C1): the engine refuses them with DXP9208, so a 2005 report with those regions previews empty regions.
Unknown elements, foreign namespaces, rd: designer hints ✅ Preserved verbatim: the model is the element tree and the designer mutates only through it. A test proves one edit is one diff on every corpus file.
Version upgrade ❌ No "upgrade to 2016" command (U-C1).

Report items the designer places

Item Status Notes
Textbox, Rectangle, Line, Image, Subreport ✅ Phase 3. Subreports need the host's SubreportResolver; without one the engine reports DXP9211 and keeps the box.
Table, Matrix, List (all Tablix) ✅ Phase 4. Groups, totals, merge and split, every group property, cell formatting through the grid. KeepWithGroup only on row members (the engine refuses it on column members).
Column, bar, line, area charts ✅ Phase 5. Plain, stacked and percent-stacked; smooth lines; the 15 palettes; legend right; title; axis visibility, gridlines, minimum and maximum.
Pie, doughnut ✅ Written as RDL's Type="Shape" with Subtype="Pie" or "Doughnut", as Report Builder writes them; the engine draws them, centred, starting at three o'clock and turning clockwise. Gated against Microsoft's engine like the other kinds (budgets 4.02 % and 6.21 %).
Scatter, bubble, range, stepped, polar, funnel, pyramid, 3-D; data labels, markers, secondary axes, scale breaks, log scales, striplines, legend positions other than right, chart and axis titles ❌ Engine refusals (DXP9405, U-C3). A corpus report carrying them still draws its frame, axes and legend.
Sparkline, data bar ✅ A chart with hidden axes, as Report Builder writes them; in a cell or standalone.
Radial gauge, linear gauge ⚠️ Placed with a scale, a pointer, ranges, tick marks and labels. The pointer cap starts hidden: a visible cap is drawn as a flat disc and the engine names its shading as not reproduced (DXP9407). Frames, gradients, pins, thermometer pointers are U-C5. DocWright 1.4.0 does not draw a linear gauge's tick marks and scale labels (measured 34.6 % raster difference against Microsoft's engine, Phase 5 handoff).
Indicator ✅ Fourteen icon sets over the 52 styles the engine draws. TransformationType is None or Percentage (the engine's spelling; Report Builder's Percent is refused) and Percentage needs stated bounds — the designer writes 0 and the dataset's total.
Barcodes: Code 128, EAN-13, Code 39 (with checksum), QR Code ✅ DocWright's built-in drawer, verified upstream against ZXing. Microsoft's engine cannot render them (no custom-item extension), so an RDL with a barcode is DocWright-only.
Map ⚠️ Placed from the palette and drawn by DocWright 1.4.0: planar and geographic maps, spatial datasets (WKB or WKT), colour rules bound to data, grid lines, titles. Legends, the colour scale, the Optimal distribution beyond three buckets, size and marker rules, views and tile layers are named by DXP9409 in the preview. Layers are edited in the XML view or the property grid.
Custom report items of a vendor type ❌ Preserved and drawn as a frame; the host registers a drawer (ReportPaginationOptions.CustomItemDrawers) or the engine reports DXP9406.

Viewer and export

Area Status Notes
Paging, zoom, parameters (with the 2016 layout grid), toggles, interactive sort, drillthrough, bookmarks, document map, search, print ✅ Phase 2; Blazor Server and WebAssembly over one component.
Dotted, dashed and double borders in the viewer ⚠️ U-B1, open in 1.4.0. The HTML projection draws them solid (DXP9502); PDF and page images draw them in their style. Preview and export differ on those three styles.
Soft (interactive) page breaks ⚠️ U-B2, open in 1.4.0. ReportPaginationMode.Interactive exists but is unmeasured against the reference; ReportWright paginates physically.
XLSX export of collapsed toggles ✅ U-B3: DocWright's XLSX writes the row outline from the toggles and is gated against the reference on outline levels (DocWright COMPAT.md, "XLSX export"); treated as closed since 1.3.1.
Exports ✅ PDF, PDF/A, PNG and JPEG, DOCX, XLSX, CSV, text, from the registry (GET /exports). PowerPoint, XML, HTML file and MHTML are U-C6.

Data

Area Status Notes
CSV, JSON file, REST JSON, XML, SQL Server, System.Data objects, in-memory objects ✅ Phase 1. Every provider runs server-side; a client sees metadata and rows, never a connection string.
OLEDB, ODBC, SSAS/MDX ❌ Refused by design (native drivers, cell-set semantics).
PostgreSQL, MySQL, SQLite, OData, Excel files ❌ Post-1.0 (Phase 7).

Hosting

Area Status Notes
ASP.NET Core 8 and 10, MapReportWright(prefix) ✅ REST API for stores, parameters, runs, sessions, toggles, sort, search, export, schema, preview; fuzzed with malformed requests (Phase 6).
Permissions ✅ ReportPermissions decides read, edit and export per request; edit endpoints answer 403 without it.
Blazor WebAssembly engine ✅ The engine runs in the browser with the viewer's bundled metric fonts (payload budget C0.5: 20 MB uncompressed, 6.5 MB Brotli). Rows arrive from the server.
.NET Framework ❌ ReportWright targets netstandard2.0, net8.0 and net10.0; the Blazor and host packages net8.0 and net10.0.