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
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.
- wxReportsDesigner
- invoice.jsonReport definition
- wxReportsLibYour application
How a report is made
-
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
Query
Write the SELECT in the report's SQL editor. Columns become fields you can place. Parameters are typed and substituted before execution.
-
3
Lay out
Drop fields onto bands. Each band knows when to repeat, when to break the page and when to stay together.
-
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.
Charts from the same result set
- Column
- Bar
- Line
- Area
- Pie
- Doughnut
- Combo
- Scatter
- Histogram
- Pareto
- Waterfall
- Sparkline
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.
- EAN-13
- EAN-8
- UPC
- CODE128
- CODE39
- DataMatrix
- QR Code
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);
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.
- Connecting
- Query
- Rows
- Formulas
- Charts
- 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.
| 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 |
| 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.
- Windows Visual Studio project, static CRT, statically linked wxWidgets. Documented build
- Linux Target platform. Planned
- macOS Target platform. Planned
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.
- Licence The licence terms have not been settled. To be decided
- Distribution Whether the packages are free, paid or licensed per seat is not decided. To be decided