Skip to main content

Alter Reports

Complete full-featured tool for preview and download of SQL reports in your Joomla site.

AlterReports was designed as a native Joomla reporting extension which covers all needs and aspects of reports for your website. Using SQL queries with rich filters and conditional statements allows you to view and download reports of your database data in most convenient way.

Advanced customization settings allow to adjust visual presentation of your reports.

Access permissions helps to control which reports and which report columns to display for certain usergroups, allow/disallow download formats.

Extension information


5.x maintained

4.x maintained

3.x not maintained

click here
click here
See also:
Alter Surveys
click here

  Buy now

  • View and download reports in both frontend and backend.
  • Nested categories for reports.
  • Frontend views of categories (list of categories), category (reports from category) and single report.
  • Using different databases for loading reports data. Standard Joomla database drivers are supported including MSSQL via 'Microsoft SQL Server Driver for PHP'.
  • Creating of reports by entering SQL query, editing of query with SQL profile and explain results, easy inserting of tags and database tables into query.
  • Configurable filters for reports of few types (text field, text area, drop-down lists, checkboxes, radio inputs with either manually entered options or options loaded via SQL query), filter's values can be used in query as via tags.
  • Conditional statements for query: certain parts of SQL can be executed only if filter's value was entered.
  • Search in report and download selected rows only.
  • Ordering of report by column.
  • Report can be downloaded in configurable CSV, XLS, XLSX, PDF, HTML and XML formats. PDF documents can be customized via custom HTML templates.
  • Rich customization of report views, HTML, XLS and XLSX formats (borders, colors, backgrounds etc., separate styles for headings, subheadings, data rows and footer row).
  • Subheadings with ability to span above few heading columns.
  • Footer row: each column can have custom footer value or auto-calculated values (minimum, maximum, average and sum). XLS reports can have footer values either pre-calculated or have formulas (built-in AVERAGE(), SUM(), MIN(), MAX() or you can use own formula with replaceable tags of column data rows coordinates).
  • Each report column can have own style applied for report views, HTML, PDF, XLS and XLSX formats.
  • 3-levels of style settings: global settings, individual report settings, column settings: you can easily change styles for all reports.
  • Count of report views and downloads.
  • Access levels for categories of reports, reports, available formats and columns.
  • HTML and PHP pre-processors for columns values: you can wrap a value into HTML code or change it via PHP.
  • Current Joomla user-related and GET variables tags with conditional elements in query (query can be different for user with different usergroups).
  • Ability to delete selected report rows in backend and frontend.
  • Ability to embed reports into articles via special {reportid=x} tag (Joomla content plugin is included).
  • Ability to group report rows by column.
  • Ability to email reports via special link (great feature to receive reports scheduled by a cronjob).
  • Import/Export of reports in XML - helps to transfer your reports between local and live servers.
  • Custom .ttf fonts support for HTML-based reports including PDF (fonts are embedded into .pdf documents).
  • Selection of PDF generation engine: either server-independent 'dompdf' or more powerful 'wkhtmltopdf' engine can be used. 'wkhtmltopdf' engine requires wkhtmltopdf library to be installed on your server.
  • Repeatable page header and footer for PDF.
  • to be continued... 


This extension uses PHPOffice/PhpSpreadsheet (MIT License).

This extension uses DOMPDF library (GNU Lesser General Public License v2.1).

Want a new feature? Why not? Please Contact Us!

  • Joomla 4.4 and higher.
  • PHP 8.1 and higher, Mbstring extension, MySQL >=5.7.
  • Bootstrap 5 frontend/backend template.
  • Enabled 'Editor - CodeMirror' Joomla plugin.
  • Depending on your server settings and report properties you may be forced to increase the limit of PHP settings max_input_vars, and suhosin.request.max_vars (if Suhosin is installed). The average value for these settings should be about 5000. The reason is that there are too much settings in report edit page.
  • PHP settings max_exec_time and memory_limit should be also increased depending on downloaded report size and complexity, especially for generating of PDF or XLS downloads.
  • SQL knowledge for sure.
  • MSSQL reports require SQL Server 2008 or 2012 and PHP extension 'Microsoft SQL Server Driver for PHP' (
  • 'wkhtmltopdf' PDF engine requires wkhtmltopdf library installed on your server.

Current version:

  • Feature: respect SQL_CALC_FOUND_ROWS for counting report rows.
  • Fix: issue with deleting rows in frontend if a report is embedded into an article.

16 Mar 2024 - ver. 4.2.0:

  • Feature: new single report menu item setting "Advanced > Default Filter Values" helps to control the default filter values.
  • Feature: new Data Validation settings for XLS Data Style settings of a column, helps to define allowed cell values with drop-down and error/prompt messages.
  • Update: PhpSpreadsheet 2.0 library.

02 Dec 2023 - ver. 4.1.1:

  • Fix: Joomla 4.4.1 and 5.0.1 language issue.

31 Oct 2023 - ver. 4.1.0:

  • Feature: new Language column type to display the Joomla content language information with title and flag, just like in native Joomla components.
  • Feature: Joomla 5 compatibility.
  • Change: Joomla 4.4 as min, PHP 8.1 as min.

07 Sep 2023 - ver. 4.0.0:

  • Change: Joomla 3 support dropped.
  • Change: PHP 8.0 as min.
  • Feature: new setting "XLS > Grouping > Empty Rows" helps to add empty rows before grouped row in XLS.

26 Jun 2023 - ver. 3.8.0:

  • Fix: report edit issue with a site in subfolder.
  • Fix: PDF "Grouped Row Page Break" setting not applied.
  • Feature: new "Grouped Row Style" settings to apply custom styles for grouped rows.
  • Feature: new PDF setting "Repeat Headings" allows to repeat table headings on each page (enabled by default).
  • Feature: Grouping settings for XLS format.

08 May 2023 - ver. 3.7.0:

  • Feature: new column setting "Heading PHP Processor" to execute PHP code and change the column heading.
  • Feature: new Advanced report setting "Rows PHP Processor" to execute PHP after the report rows load.
  • Feature: new "list-fancy-select" Dropdown filter select for Joomla4, see example in our demo report Continent filter.
  • Feature: new "Task - Alter Reports" task plugin for Joomla4 to schedule emails with reports.

23 Nov 2022 - ver. 3.5.2:

  • Feature: new setting "Frontend View > Advanced > Form Method" helps to switch between GET/POST form submit methods.
  • Fix: "Browser Page Title" menu item setting not applied.
  • Fix: MySQL via PDO driver for Joomla 4.

15 Sep 2022 - ver. 3.5.1:

  • Feature: new frontend/backend advanced setting "No-Results Text" helps to customize the output if no rows are loaded.
  • Fix: report tags not saved in Joomla 4.
  • Fix: Joomla 4 compatibility.

24 June 2022 - ver. 3.5.0:

  • Fix: SQLSRV driver for Joomla 4 issue.
  • Feature: support {PAGE_COUNT} for page count in PDF header and footer HTML for dompdf engine.

02 Mar 2022 - ver. 3.4.4:

  • Feature: new column setting "Print" helps to not print column in backend/frontend view.
  • Fix: columns are not sortable in Joomla 4.
  • Fix: Joomla 4 compatibility.

07 Feb 2022 - ver. 3.4.2:

  • Fix: menu item parameters not applied for reports category view.
  • Feature: separate frontend/backend settings 'Print Selected Rows'.

01 Jan 2022 - ver. 3.4.1:

  • Fix: XLS row height not applied.
  • Fix: invalid display of frontend filters with "Joomla" layout.
  • Fix: XLS cell border settings not applied.
  • Fix: global XLS column auto-width setting not applied.
  • Feature: new placeholder for custom date: {date.format} with format accepted by DateTimeInterface::format().
  • Fix: Joomla 4 UI.
  • Fix: {session->xxx} placeholder values from Joomla session.

07 April 2021 - ver. 3.4.0:

  • Feature: new column setting "Advanced > Heading HTML Template" helps to use HTML instead of plain text for report column headings.
  • Feature: backend menu item types.
  • Feature: multiple filters in backend reports view.
  • Change: PHP 7.4 as min.
  • Feature: repeatable page header and footer for PDF.

26 February 2021 - ver. 3.3.1:

  • Change: row repeatable backgrounds moved to "Table Style".
  • Feature: "Repeatable Backgrounds" for columns (we already had the same feature but for rows).
  • Feature: new frontend/backend advanced settings "Preserve Pagination" and "Preserve Ordering" control the data stored in used session.
  • Fix: MSSQL 2012 queries.
  • Fix: search filter not applied for downloads.

25 November 2020 - ver. 3.3.0:

  • Feature: new filter setting "PHP Processor" helps with custom filter modifications.
  • Change: MSSQL driver removed, please use Microsoft SQL Server Driver for PHP.
  • Feature: frontend reports category view can filter reports by tags.
  • Change: frontend reports with un-authorized "view" and "view own" permissions are now displayed with special customizable layout ("you are not authorized to view this report" message by default).
  • Feature: new "Date" column type with customizable display format.
  • Feature: Joomla 4 compatibility.

05 September 2020 - ver. 3.2.2:

  • Fix: invalid PDF font families.

25 August 2020 - ver. 3.2.1:

  • Fix: enhanced filters validation: invalid or empty required filters trigger error and no data is loaded.

01 July 2020 - ver. 3.2.0:

  • Fix/change: column names can only contain numbers, a-z, A-Z letters and underscore. Once a report is edited and bad column names exist, they are auto-renamed to correct format. You need to update the column names in SELECT clause of SQL query to match the new correct names. Remember, you can use column Heading property for displayed column heading which can include any chars.

30 June 2020 - ver. 3.1.1:

  • Fix: report categories page unavailable in backend (really weird).

05 May 2020 - ver. 3.1.0:

  • Feature: column types. We started with two column types: "Common" and "Row Number". Common column provides current behavior. Row Number column displays row numbers, you can disable "Row Numbers" option, add "Row Number" column and apply custom position/style easily. More column types are coming...
  • Feature: display global component setting value if a report setting is inherited.

04 May 2020 - ver. 3.0.2:

  • Fix: style settings duplicated and not applied.

26 April 2020 - ver. 3.0.1:

  • Fix: inherit all current GET variables for report URL in order to preserve filtering based on these variables.
  • Fix: bloated columns. Please re-save a report with broken columns.

16 March 2020 - ver. 3.0.0:

Warning: this is a major release with changes in SQL query conditional statements and custom layouts. It's better to test the new release on dev environment first.

  • Feature: ability to use {filter.label} placeholder for currently selected option label of dropdowns, checkboxes and radio filter.
  • Fix: inner tabs and headings aligned nicely.
  • Feature: new report PDF setting 'Grouped Row Page Break' to add a page break before grouped row.
  • Feature: new report settings 'Grouped Row Template' and 'Grouped Row PHP Processor' allow to control grouped table row output.
  • Fix: columns ordering in frontend.
  • Feature: {where} tag for main SQL query which is auto-replaced with auto-generated search conditions. Helps if you have sub-queries with WHERE clause.
  • Feature: new setting 'Grouped Row Headings' to display column headings before or after grouped row.
  • Fix: issue with deleting reports/databases since Joomla 3.9.1
  • Feature: new setting 'Show Subheadings' helps to control visibility and position of subheadings row (above or below main headings).
  • Change: PHP 7.x as min.
  • Fix: pagination error with embedded reports.
  • Change: all filter tags inside SQL query conditional statements should be wrapped in {}: /* IF {filterTag} */ but not /* IF filterTag */.
  • Feature: SQL query can include PHP code via <?php ... ?> tags.
  • Feature: SQL query can include PHP code and complex logic, i.e. /* IF (strpos({filterTag}, 'test') === 0 && !empty({filterTag2})) */.
  • Change: filters with multiple values are now filtered as IN({{filter_tag}}) but not as IN('{filter_tag}').
  • Feature: report settings for unused download formats can be globally disabled.
  • Feature: faster and cleaner UI for report edit.
  • Change: new report layouts, please compare with your existing custom layouts with the new layouts.
  • Feature: ability to create and delete report columns manually.
  • Feature: new backend filters layout "joomla" to match the Joomla table filters style.
  • Change: PHPExcel > PHPspreadsheet library update.

28 March 2018 - ver. 2.3.1:

  • Feature: new advanced report setting 'Delete Query' helps to have custom control over the rows delete operation.
  • Fix: print layout not applied in frontend.
  • Feature: default value for Calendar filter accepts PHP's DateTime contructor values like '-30 day'.
  • Feature: custom date format for Calendar filter.
  • Fix: 'select all' link doesn't highlight all options in multiple-select dropdown filter.
  • Fix:  issue with /* IF filter_tag = 'value' */ condition statement.

22 January 2018 - ver. 2.3.0:

  • Feature: use {REPORT} tag in report email body to embed a report table.
  • Feature: new advanced report setting 'Frontend Connection Failed Article' allows to display specific article if a connection to report's database can't be established.
  • Feature: new setting  'Email Min Rows' in report's Email settings allows to send email only on minimum number of rows in a report.
  • Fix: SQL query editor auto-height limited to 40 rows.
  • Feature: new report setting 'Advanced -> Query PHP Processor' allows to execute custom PHP code on report SQL query.
  • Feature: new dropdown/radio/checkbox filter value setting 'Values SQL Query' to load default value(s) dynamically.
  • Feature: use {user->field_XXX} tag for custom user field XXX.
  • Change: 'Print Layout' setting renamed to 'Print Orientation'
  • Feature: added 'Print Layout' setting to select custom print MVC layouts.

10 April 2017 - ver. 2.2.0:

  • Fix: common style settings for footer are applied.
  • Feature: ability to get label of selected filter option(s) for dropdown/radio/checkbox filters via {tag.label}
  • Fix: issue with radio filters not selecting previous value.
  • Feature: new filter tags {TAGNAME.join_commas}, {TAGNAME.join_spaces} and {TAGNAME.join_pipes} to get string of comma/space/pipe separated multiple values, handy for e.g. FIND_IN_SET() or REGEXP.
  • Fix: alien zeros in XLS footer.
  • Feature: Microsoft SQL Server 2008 support via sqlsrv.
  • Feature: new component setting 'Advanced > Bootstrap 3 Layouts' to help with Bootstrap 3 code.
  • Feature: selection of PDF Engine. By default previous 'dompdf' engine is used, alternatively you can select 'wkhtmltopdf' engine which provides faster and more accurate PDFs but requires wkhtmltopdf library installed on your server.

14 October 2016 - ver. 2.1.0:

  • Feature: ability to check multiple filters via /* IF filter1,filter2 */ conditional statement, just use comma-separated filter tags.
  • Fix: Document Format missed in PDF settings of individual report.
  • Feature: 'Group Column Sum' setting allows to display sum of values of a column in the most right column of grouped column row.
  • Feature: new setting 'Custom Size' allows to set custom PDF page size.
  • Feature: new PDF setting 'Initial View Style' allows to control the fit of page on initial view.
  • Feature: new setting 'Limit Box Options' allows to customize limit box options.
  • Feature: ability to use filter tags in column subheading.
  • Feature/changes: 'Force Download' setting removed, new setting 'Download Mode' allows to select report download mode: download, or open in same window, or open in new window.

27 July 2016 - ver. 2.0.0:

  • WARNING! Custom report layouts of previous versions are incompatible! Simple code changes are required.
  • Feature: new layout 'default_norows' with"No results found." message allows to customize message if no results were found.
  • Fix: PHP 7 issue with XLS download.
  • Feature: new component global advanced setting 'Query Editor Height' allows to set height directly in pixels or auto.
  • Feature: new setting 'Custom CSS' to apply for Frontend/Backed/HTML/PDF views.
  • Feature: ability to include custom .ttf fonts for HTML-based views and PDF! New Advanced component setting 'Path to TTF Fonts' allows to specify folder with .ttf fonts to use in font style selectors.
  • Feature: reduced PDF report size (we've got -45% on our demo report), reduced PDF generation time (about -15% on demo report).
  • Feature: reduced XLS generation time (more than 3x faster on demo report).

29 May 2016 - ver. 1.2.3:

  • Feature: Import/Export of reports in XML - helps to transfer your reports between local and live servers.
  • Fix: improved color picker fields for FireFox and IE.
  • Feature: now report title and description accept tags of currently logged user like {user->name} and tags of currently selected filters like {filter_tag}.
  • Feature: new setting 'PDF -> Document Format -> Page Margins'
  • Update: dompdf to v. 0.7.0

17 November 2015 - ver. 1.2.2:

  • Fix/Feature: hidden columns were not searched if search is enabled.
  • Feature: new setting 'Print All Rows' allows to load all rows for print layouts.
  • Feature: new setting 'Include Subcategories' for Category Layout allows to include reports from child categories.
  • Feature: separated 'Footer Value Precision' and 'Footer PHP Processor' column settings for each format.
  • Feature: 'Number Format' setting for XLS format of column footer.
  • Feature: 'Cell Padding' and 'Cell Spacing' settings for tables.
  • Feature: new setting 'Preserve Filter Values' for frontend and backend views allows to keep selected filter options during user session (enabled by default).
  • Feature: new filter setting 'Translate Options' for dropdown, checkbox and radio filters.
  • Feature: new setting 'Prepare Content' for Frontend View, Backend View and PDF formats allows to prepare HTML output of report with Joomla content plugins.
  • Feature: new setting 'Download All Records' for each downloadable format - enabled by default, it helps to either download all records of a report or only currently displayed records.
  • Feature: 'Show Title' and 'Show Description' options for PDF view.
  • Feature: new footer type 'Value - SQL' helps to display footer value by custom query.
  • Feature: ability to email reports via special link (great feature to receive reports scheduled by a cronjob) - check new Email tab of report settings.

07 April 2015 - ver. 1.2.1:

  • New report setting 'Template Article' in PDF downloads settings allows to select a Joomla article which will be used as HTML template for PDF (article can have tags {TITLE} and {REPORT} which are auto-replaced with report title and results table, hence you can wrap report in your own custom text with logo image etc.).
  • Fix: missed PDF checkbox for filter availability.
  • Feature: new report setting 'Show Rows Count' to display number of loaded rows.
  • Feature: new conditional queries for user properties, i.e. /* IF USER.GROUPS != 11 */ .. do smth if user has 11th usergroup ... /* ENDIF */
  • Feature: new setting 'Filters Layout' for Frontend and Backend Views allows to display filters in either vertical or horizontal layout.
  • Feature: new setting 'Display Online' for checkbox and radio filters allows to display options inline.

28 October 2014 - ver. 1.2.0:

  • Feature: 'Rows' and 'Display Select All' settings for multiple-select drop-down filters.
  • Feature: using user-base and GET tags in conditional statements, i.e. /* IF '{user->username}' != 'admin' */ or /* IF '{get->id}' > 4 */
  • Feature: PDF report downloads.

10 September 2014 - ver. 1.1.9:

  • Feature: 'Vertical' report layout - allows to display headings and report data vertically.
  • Fix: once checked checkbox filter always has last option checked.
  • Fix: issue with filters not applied.

17 June 2014 - ver. 1.1.8:

  • Feature: calculate footer formulas using initial data unaffected by PHP processors.
  • Feature: new column setting 'Footer PHP Processor' to parse footer value before output.
  • Feature: filter tags and conditional elements in options SQL query for drop-down filter.
  • Feature: GET variables tags like {get->user_id}.
  • Feature: PHPExcel library updated to 1.8.0.

28 April 2014 - ver. 1.1.7:

  • Fix: download of XLS and XML

14 April 2014 - ver. 1.1.6:

  • Feature: {user->levels} user-related query tag with comma-separated user authorized levels.
  • Fix: disappearing titles with tooltips in frontend
  • Fix: table ordering in frontend.
  • Feature: new settings 'Show Limit Box', 'Show Ordering Options' and 'Print Layout'  for Backend View in component settings and report settings.
  • Feature: {VALUE} tag for 'Footer Label' field (ex 'Footer Custom Value').  It allows to display a text with calculations like 'Total: 20' by using label text 'Total: {VALUE}'.
  • Feature: 'Default Value SQL' setting for Calendar filters - now you can load default value from database.
  • Feature: ability to group report rows by column.

03 February 2014 - ver. 1.1.5:

  • Feature: Allowed ordering by multiple fields.
  • Feature: Allowed tags in HTML processing of column value.
  • Feature: /* IF NOT tag */ conditional element.
  • Feature: /* IF tag = ’test value’ */ and /* IF tag != ’test value’ */ conditional elements.
  • Feature: Show 'No Reports' Message setting for category layout.

22 Oct 2013 - ver 1.1.4:

  • Feature: ability to browse and insert table columns into query.
  • Feature: ability to browse and insert user tags into query.
  • Feature: drag-and-drop columns ordering.
  • Change: user tags should be escaped in the query.

10 Oct 2013 - ver. 1.1.3:

  • Added auto-escaping and auto-quoting of user-related tags.
  • Removed IeCursorFix.
  • Added content plugin and ability to embed reports into articles.

27 Sep 2013 - ver. 1.1.2:

  • Fix: issue with multiple drop-down filters loading same options
  • Fix: issue with escaping textual primary keys

18 Sep 2013 - ver. 1.1.1:

  • Added current Joomla user-related tags: {user->id}, {user->name}, {user->username}, {user->email}, {user->registerDate}, {user->lastvisitDate}.
  • Added ability to delete selected report rows in backend and frontend using Primary Key and Primary Table settings.
  • Improved filter name entered by user.
  • Fixed issue with loading data from 3rd-party database.

01 May 2013 - ver. 1.1.0:

  • New Subheadings row with ability to span above few heading columns.
  • Footer row: each column can have custom footer value or auto-calculated values (minimum, maximum, average and sum).
  • XLS reports can have footer values either pre-calculated or have formulas (built-in AVERAGE(), SUM(), MIN(), MAX() or you can use own formula with replaceable tags of column data rows coordinates).

01 Feb 2013 - ver. 1.0.0