wxReports

One report engine. A designer to draw it, a library to run it.

wxReports lays out banded reports over your SQL database and saves them as a JSON file. wxReportsLib is that same engine as a static C++ library, so the report you designed renders identically inside your own application — no report server, no runtime to install.

Targets Windows, Linux and macOS

Nothing published yet

Designer canvas

A4 · 210 × 297
Details 8 mm A drawn representation of the designer, not a screenshot.

Two projects, one engine

wxReports links wxReportsLib. The designer is not a second implementation that exports a format for another renderer to interpret — it is the same code, and a drift check runs both against the same fixtures. What stands in the print preview is what your application produces.

  1. wxReportsDesigner
  2. invoice.jsonReport definition
  3. wxReportsLibYour application

How a report is made

  1. 1

    Connect

    Pick a driver and a connection string. One report can hold a different SQL statement and a different connection string for each server type.

  2. 2

    Query

    Write the SELECT in the report's SQL editor. Columns become fields you can place. Parameters are typed and substituted before execution.

  3. 3

    Lay out

    Drop fields onto bands. Each band knows when to repeat, when to break the page and when to stay together.

  4. 4

    Print

    Preview, print, or export a PDF — vector or raster. Or export the resolved data as JSON or CSV.

What goes on the page

  • LabelStatic text.
  • Data fieldA column from the query, formatted by its value type.
  • ParameterA value supplied before generation.
  • VariableA computed value — a Lua expression when you need one.
  • SummaryA total, at report or group scope.
  • Frame and lineRules and boxes; line caps join into real table rules.
  • ImageFrom a file, or embedded in the report itself.
  • SubreportA whole report nested in a band, resolved recursively.
  • ChartTwelve types, aggregated from the same result set.
  • BarcodeSeven symbologies, drawn as vector.

Print preview

PDF · A4
Sales by region2026-09-10
ItemQtyNet
Region: North
Cable tray 2001284 812,00 Bracket M81 0402 184,00 Junction box961 536,00 Gland PG162 5001 125,00
Region total9 657,00
Report total31 204,00
wxReportsPage 1 of 3
A drawn representation of a generated page, not a screenshot.

Charts from the same result set

Aggregate with sum, count, average, minimum or maximum. Stack normally or to 100%. Bucket dates by day, month, quarter or year. Keep the top N and sort by category or by value. Add a second axis, place or hide the legend, and scope a chart to the whole report or to the group it sits in.

Barcodes

The engine draws every bar as a rectangle straight onto the device context. Nothing is placed as a bitmap.

Control over what actually prints

Groups

Group on an expression. Repeat the group header on every page, break the page before or after it, keep a group together, and set how many detail rows have to stay with the header.

Conditions

Show or hide a band with a visible-when or hide-when condition, evaluated per row. A malformed condition fails safe instead of killing the report.

Formulas

Variables and conditions run in a Lua sandbox, with the report's own values in scope.

if row.net < 0 then
  return "overdue"
end
return ""

Formatting

Named styles, conditional formatting, value types, date formats, decimal and thousands separators.

Growth

A field can grow with its content up to a maximum number of lines, and push or extend whatever sits below it.

Five databases, one report

A report file carries SQL and a connection string per server type. Design against SQLite, run against Oracle, without keeping a second report.

SQLite Embedded file sqlite:reports.db
SQL Server via FreeTDS mssql://host:1433/sales
MySQL / MariaDB via MariaDB Connector/C mysql://host:3306/sales
Oracle via ODPI-C oracle://host:1521/ORCL
PostgreSQL via libpq pgsql://host:5432/sales

Inside your application

Link the static library, load the definition the designer saved, set the parameters, generate. There is no service to run and no second executable to ship.

wxReport report(wxT("Invoice"));report.Load(wxT("invoice.json"), connectionString);report.SetParameterValue(wxT("invoice_id"), wxT("123"));wxString error;if (!report.ExportPdf(wxT("invoice.pdf"), &error))    wxLogError(error);
The same definition file the designer wrote.

Generation you can hold on a leash

Set a timeout, a row cap, a data cap in MiB and a batch size. Cancel a running generation. Read progress as it moves through its stages. Large result sets stream instead of buffering.

  1. Connecting
  2. Query
  3. Rows
  4. Formulas
  5. Charts
  6. Finalizing

It remembers what it already built

Data, layout, subreport and chart caches, each with build and hit counters — next to counters for SQL executions, Lua evaluations and rendered bands.

Outputs

Print, print preview, PDF (vector or raster), report data as JSON, report data as CSV.

Before it reaches the printer

Check report

A preflight pass that lists the problems it found and jumps to the one you select.

Data preview

The resolved result set, before any layout is applied.

Data export

wxReportsData v1 — resolved rows and columns, deliberately without SQL, file paths, connection strings or layout. Safe to keep as a test artefact.

Automated tests

A suite covering every section and element type, all chart types, page formats and margins, parameters, formulas, summaries, subreports, streaming, caches, PDF and JSON export, cancellation, timeouts and resource limits.

Packages

Direct download, no account. A row appears here for every package that is meant to exist; it goes live the moment the file is uploaded, with its real size read from disk.

No package has been uploaded yet. The table fills itself in as soon as the first build lands in the downloads folder.

wxReports — the designer
Platform Format File Size Get
Windows x86 ZIP wxReports-dev-windows-x86.zip Portable build. Unpack and run. Built with Visual Studio, static CRT, wxWidgets linked statically. Size not available Not uploaded
Linux amd64 DEB wxreports_dev_amd64.deb System package for Debian and Ubuntu. Planned; the Linux build is a target, not a finished package. Size not available Not uploaded
macOS x86_64 DMG wxReports-dev-macos-x86_64.dmg Disk image for Intel Macs. Planned; the macOS build is a target, not a finished package. Size not available Not uploaded
wxReportsLib — the library
Platform Format File Size Get
Source C++ ZIP wxReportsLib-dev-src.zip The engine as C++ sources to link into your application. Same code the designer runs on, with its database drivers. Size not available Not uploaded

Windows, Linux, macOS

Both projects are built on wxWidgets and target all three systems. The build documented today is the Visual Studio one; Linux and macOS are the goal, not a finished download.

Where the project stands

wxReports and wxReportsLib are in active development. What is settled is on this page; what is not is listed below rather than filled with a guess.