Overview
The Excel Reports module creates automated, template-driven reports that pull historical point values into an Excel workbook and deliver them by email on a schedule. Define named ranges in a template, map them to data points and time periods, and Mango by Radix IoT fills in the numbers — including statistics like averages, sums, and min/max values.
Prerequisites
- Mango 4.x or 5.x with the Excel Reports module
- Data points with historical logging enabled
- Excel or LibreOffice Calc for template creation
- Configured email server in Mango (Administration > System settings > Email settings)
Step 1: Create the Excel Template
Creating Named Ranges
- Add header labels in the top row (e.g.,
Timestamp,BoilerTemp,FlowRate) - Select the header row and data cells below
- Go to Formulas > Create from Selection, check Top row
Tip
Use simple names without spaces: boiler_temp_daily, chiller_kw_monthly.
Layout Tips
- Use a Data sheet for raw values and a Report sheet with charts referencing it
- Pre-build charts and conditional formatting — they update when Mango fills the data
Step 2: Create the Report in Mango
- Navigate to Analytics > Excel reports. The page opens on the Report templates tab; the second tab, Finished / in-progress reports, is where you confirm a run actually produced a file
- Click New template. Enter a Name — the Export ID (XID) is generated for you — and upload your workbook under Select template file
- Set Report execution roles. This is the identity the report runs as, and it is a set of roles, not a user account
- Use the permissions below it to decide who may read generated reports (Read generated report) and who may change the template (Edit report template). Prevent purge exempts this template’s output from automatic cleanup
Step 3: Configure Time Periods
Open the Time periods tab and add a period. Each one has a name and a mode:
| Mode | What it does |
|---|---|
| Not specified | No range set. Mango will not save a scheduled template while any period is Not specified (Date range required for scheduled reports) |
| Relative | A window computed at run time from Date type, Period count and Period type |
| Specific | A fixed From / To range |
A Relative period’s Date type offers exactly four choices:
| Date type | Behavior | Example |
|---|---|---|
| Past | Now minus interval to now | Past 24 hours |
| Previous | Complete prior period | Previous month |
| Current | Period start to now | Current week so far |
| Ago | A specific past period | 2 months ago |
Period type runs seconds, minutes, hours, days, weeks, months, years.
Set a Rollup type and Rollup period to aggregate raw samples into fixed intervals (e.g. a 15-minute average). Include bookend values adds the samples immediately outside the window, so a chart starts and ends on a real value instead of mid-gap.
Warning
Without a rollup, a point logging every second produces 86,400 rows per day. Always use rollups for high-frequency data.
Step 4: Map Data Points to Named Ranges
- Under Configure data, set Location for time values — this is the named range that receives the timestamp column
- Open Select data points (N points currently selected) and pick your points in the point selector. Each selected point becomes a row showing its Device name, Point name and Export ID (XID)
- In the Named range column, enter the base name from your template
Automatic Statistical Ranges
Append a dot suffix to a mapped base name and Mango fills that single cell. With boiler_temp mapped, these work for a numeric point:
| Range | Value |
|---|---|
boiler_temp.average |
Mean |
boiler_temp.sum |
Sum |
boiler_temp.integral |
Statistical integral |
boiler_temp.delta |
Change across the period |
boiler_temp.minimumValue / .minimumTime |
Lowest value, and when it occurred |
boiler_temp.maximumValue / .maximumTime |
Highest value, and when it occurred |
boiler_temp.firstValue / .firstTime |
First sample, and its timestamp |
boiler_temp.lastValue / .lastTime |
Last sample, and its timestamp |
boiler_temp.count |
Sample count |
boiler_temp.hasData |
Whether the period returned anything |
Warning
It is .minimumValue and .maximumValue, not .minimum and .maximum. A suffix Mango does not recognise is left blank — the report still generates, with an empty cell and no error. The same is true of any misspelled base name.
Point metadata works the same way: boiler_temp.xid, .name, .deviceName, .extendedName, and .tags.<tagKey> for any tag on the point.
Non-numeric points get a smaller set. Alphanumeric adds .changes; binary and multistate get .starts, .runtime and .proportion instead of the numeric statistics. The value/time and .count suffixes are available on every type.
Step 5: Schedule the Report
On the Schedule tab, tick Schedule this template to be run periodically — until you do, the tab shows nothing else. Then type a pattern into Cron pattern, or build one under Select cron pattern with the Second, Minute, Hour, Day of month, Month and Day of week menus. Each menu starts on Every, so set Second and Minute to 0 — choosing only Hour 6 gives * * 6 * * ?, a run every second from 6:00 to 6:59. Patterns are six fields, seconds first:
# Weekdays at 6 AM
0 0 6 ? * MON-FRI
# First of every month at midnight
0 0 0 1 * ?
Note
A scheduled report runs as the Report execution roles set on the template, not as a person. At 5.7.4 the runtime builds its identity from the template’s name and roles alone, so the report’s access is exactly what those roles grant — grant them deliberately, and remember that a role losing a permission silently changes what the next run can read.
Step 6: Configure Email Delivery
On the Email tab, Email report starts ticked on a new template. Under Email recipients, add who receives it: Select users, Select mailing lists, or type an address into Add email address and press Enter. Choose an Email template, and tick Compress attachments if the workbook is large.
To test, open the template’s settings menu (the gear icon in the list) and choose Configure and run, untick Email report in its dialog, and click Run. The menu’s own Run uses the saved settings and emails every recipient. Then open Finished / in-progress reports and confirm the run reached Finished rather than Failed or Email failed.
Troubleshooting
| Symptom | Likely Cause | Resolution |
|---|---|---|
| Named range not populated | Name mismatch, or an unrecognised dot suffix | Verify spelling in Excel’s Name Manager, and check the suffix is one Mango fills (.minimumValue, not .minimum) |
| Empty data columns | No history for time period | Check point logging type and date range |
| The schedule will not save: Date range required for scheduled reports | A time period is Not specified | Set every period to Relative or Specific |
| Scheduled report never runs | Schedule this template to be run periodically was never ticked, or the Cron pattern means something else (seconds come first) | Tick the box and re-read the Cron pattern |
| Report runs but reads nothing | Report execution roles lack read permission on the points | Grant those roles read permission on the data points |
| Email not received | SMTP not configured | Test under Administration > System settings > Email settings |
| Very large file | No rollup on high-freq points | Add a rollup to reduce rows |