20,919,685Total Points24,106Total Sites23,382Cell Towers69,500Racks Monitored56,753HVAC Units Monitored31,322UPS Units Monitored24,788Generators Monitored20,919,685Total Points24,106Total Sites23,382Cell Towers69,500Racks Monitored56,753HVAC Units Monitored31,322UPS Units Monitored24,788Generators Monitored20,919,685Total Points24,106Total Sites23,382Cell Towers69,500Racks Monitored56,753HVAC Units Monitored31,322UPS Units Monitored24,788Generators Monitored

Chapter 7: Reporting & Historical DataLesson 37 of 65

Creating Excel Reports with Scheduled Email Delivery

Build automated Excel reports using templates with named ranges, configure rollups, and schedule email delivery.

  • 14 min read
  • Intermediate
  • Mango 4.x / 5.x

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

  1. Add header labels in the top row (e.g., Timestamp, BoilerTemp, FlowRate)
  2. Select the header row and data cells below
  3. 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

  1. 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
  2. Click New template. Enter a Name — the Export ID (XID) is generated for you — and upload your workbook under Select template file
  3. Set Report execution roles. This is the identity the report runs as, and it is a set of roles, not a user account
  4. 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

  1. Under Configure data, set Location for time values — this is the named range that receives the timestamp column
  2. 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)
  3. 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

Get free access to all 65 Mango by Radix IoT training lessons

One short form unlocks every lesson and its video in this browser.

This form is hosted by Zoho. It loads only after you enable support cookies or choose to load it below.

We honored your browser’s Global Privacy Control signal — optional cookies are off and nothing is tracked.