Skip to content

Board Export

Horizon allows exporting board contents in two different formats:

  • PNG snapshot — screenshot of the board canvas
  • XLSX — Excel file containing all widget data

Both formats are triggered via Captain AI chat; XLSX can also be downloaded manually.

Prerequisite

The board must contain at least one widget with data loaded.

Create BoardWidget Placement


1. PNG Snapshot

The board canvas is wrapped in a RepaintBoundary widget. When a snapshot is taken:

Step Detail
1 Board image is captured via RepaintBoundary.toImage()
2 Encoded to PNG as ByteData
3 Converted to a base64 string
4 Attached to a Captain AI message or offered to the user as a download link

Browser Download

PNG download happens in the browser via Blob URL:

html.Url.createObjectUrlFromBlob(...)
AnchorElement(href: ...).click()

File name template: Board_<BoardName>_<yyyyMMdd_HHmmss>.png


2. XLSX Export

The XLSX file is produced with the syncfusion_flutter_xlsio package. Data contributions from all widgets are collected via the KpiExportable interface.

Step Detail
1 All widgets are walked; those implementing KpiExportable provide data
2 A separate sheet is created per widget
3 The sheet name is derived from the widget name (special characters escaped)
4 The workbook is built via ExportWriter.buildWorkbookBase64(sheets: sheets)
5 The base64 file is downloaded in the browser

File name template: Board_<BoardName>_<yyyyMMdd_HHmmss>.xlsx

2.1 Sheet Contents

Widget Type Sheet Structure
Cartesian X column + one Y column per series
Circular Two columns: label + value
DataGrid All visible columns as is
Gauge Single cell — label + value
Dynamic Text Single cell — label + value
Two-Column List Two columns: Label + Value
Static Text No sheet generated (no data)

3. Triggering the Export

Currently the Horizon UI has no direct Export button; export is triggered:

  1. Via the Captain AI chat dialog — the chat with AI auto-generates an XLSX and attaches it to the message; the XLSX is offered for download alongside the AI response.
  2. (In some versions) the Download icon in the board top bar — direct XLSX download.

PDF Support

There is no separate PDF export channel; the board can be exported via the browser's Print → Save as PDF. For more sophisticated PDFs, prefer the Atlas module's public link.


4. Data Filtering

Export uses the active global filter values at the time of export. That is:

  • If you set :start = 2026-05-01 in the filter panel, the XLSX contains data only from that date onwards.
  • If no value is entered, defaults are used.
  • After changing filter values, click Apply before exporting.

5. File Size

Factor Effect
Widget count Each widget adds a sheet
Number of data rows A large query result enlarges the XLSX
Embedded format XLSX is downloaded via base64 in memory

Very Large Queries

Queries with 100k+ rows can freeze the browser. For such reports, add LIMIT in Compass or store as a table on the backend.


6. Common Errors

Symptom Possible Cause Solution
XLSX download not triggered Captain AI did not respond Check the Langflow service
PNG image is blank RepaintBoundary failed to render (CORS / off-screen) Refresh the page and try again
Sheet name not visible Widget name has only special characters Update the name in Cartography
Turkish character issue in file name Download name encoding broken Restart the browser

7. Next Step

Share