Exporting items from a data grid in a Mendix application in Excel format via an Export to Excel button, is standard Mendix functionality. However, in instances where more customized Excel documents are required, your app can leverage Mendix App Store content to create custom Excel documents based on configurable templates. To achieve this, your app will require you to download and configure two Mendix App Store modules.
This how-to explains how to do the following:
- Download the App Store modules
- Configure your app to export the required data in the correct format
2 Downloading the Required App Store Modules
The Mx Model Reflection module enables your app to obtain information about its domain model (entities and attributes) and microflow definitions at runtime.
To download the modules, follow these steps:
- Open the Mendix App Store from within Studio Pro.
Search for the keyword reflection and select Mx Model reflection:
Click Download to include the module in your app project. It will be imported into Project > App Store modules in the Project Explorer.
Search for the keyword Excel, select Excel exporter, and download that module into your app project:
Depending on the layout selected when the project was created, errors in Studio Pro may arise due to the new module’s default layouts. To correct this, open each page that has an error and update the layout to the desired layout within the app.
3 Adding Navigation Items to Allow Users to Configure Settings
In this section, you will learn how to add the required pages in the app project’s Navigation that are needed to configure both the Mx Model Reflection and the Excel Export templates that will be used within the app.
- In Studio Pro, open Project > Navigation.
Add a new item to the Navigation to open the page MxModelReflection.MxObjects_Overview:
Add a new item to the Navigation to open the page XLSReport.Excel_Document_Overview:
Open Project Security and assign these two modules to the Administrator user role:
4 Creating an Input Object Entity
In this section, you will create an entity which will be used to export the Excel workbook. This will be associated with the entity holding the data with which you want to fill the Excel spreadsheet. This how to will use a Policy entity to hold the data.
- Open the domain model for your app project and add an entity to serve as a “master export” entity that is a specialization of FileDocument.
Create an association between the newly created entity and the entity (or entities) that you will want to serve as a base for the Excel export.
5 Configuring Mx Model Reflection
In this section, you will learn how to run the Mx Model Reflection synchronization so the app can leverage the output from that process to create highly customizable Excel export templates.
To run the MxModelReflection sync follow these steps:
- Run your app.
- View the app.
- Click the MxReflection navigation item to open the MxReflection overview page.
- Select each module the app needs to synchronize and click Click to refresh.
- Under Synchronize all entities and microflows of checked modules on the left, click Click to refresh .
6 Creating Excel Export Templates
In this section, you will learn how to create a basic Excel export template within your app. This section will cover an overview of the various configuration items to enable you to start building the desired templates.
The Excel Exporter has many options that allow the configurations to be as simple or complex as the user desires. This how-to will go over the basics to get you started, but building the desired template will vary according to your requirements.
6.1 Configuring the Basic Template Setup
To set up a template, follow these steps:
- Run your app.
- View the app.
- Click Excel Exporter to open the exporter overview page.
- Click the New to create a new template.
Configure the Filename (without extension) to be the default file name when the template is used. This is the Name by which the template can be identified.
The file name can always be changed when the template is used within a microflow.
Configure the Input Object to be the file document entity that is associated to your entity to be exported.
Provide a Description for identifying and documenting what this template is for:
Specify the Date time export format which defines how the dates and times should appear in the Excel file once exported.
6.2 Creating the Worksheet Layout
To create the worksheet layout, follow these steps:
Under the Worksheets section for the template, select New to create a new sheet template:
Specify the Name that will be given to the sheet when the file is exported.
Configure the Row Object that you want to export and set the reference to the template input object (if input object is used). Each object of this entity type will be saved as a row in the worksheet.
Configure the Start retrieved data at row to set the ordinal number in which the data should be exported.
This setting will possibly trim the result set being exported, as the export will go from this value to the end of the list of data
Select if the export should export distinct only or allow duplicate data
Specify the Column default width and Row default height (or leave them as defaults).
Specify if the extract will Use Static Data or not:
If static data is used, that will be configured below.
Specify if the Default text style that will denote the pre-defined style to be applied to the exported data.
Specify if the Default header text style that will denote the pre-defined style to be applied to the header data:
Specifying styles are addressed in the section below.
6.3 Configuring the Dynamic Column Data
To configure the dynamic column data, follow these steps:
On the Column Data tab, select New to create a new export column:
The Column number will be set automatically, but can be overwritten to the desired ordinal number.
Define a Name for the column and specify if that Name should be the Column Header as well when exported.
Specify the Retrieve type to identify if this column will be an attribute or a reference.
Specify the Select attribute to identify the attribute of the row object which will be stored in this column.
Specify if the column should result in an aggregate. Note that only types of decimal, integer, and long can be aggregated.
6.4 Configuring Static Data in the Sheet
To configure the static data in the sheet, follow these steps:
Open the Static Data tab and select New to create a new export column.
Specify the Row and Column that the static value should be placed.
Enter a name for the cell in the Name field.
Specify the Type by selecting if the cell is Static Text, Object Data, or Aggregate Function. This example uses Static Text (which changes the Name field into Excel Text upon selection).
Specify the Style that should be applied to the cell.
6.5 Configuring Custom Cell Formatting & Styling
To configure the custom formatting and styling for the cells, follow these steps:
Back on the main page for your new template, click New in the Styles section to create a new style that can be applied to any of the data in the Excel export:
Specify the properties of the style that will be applied to the cells.
Click Save to make the style available for dynamic columns, static columns, and headers.
7 Calling the Excel Export Module via Microflow
In this section, you will learn how to call the newly created Excel export template in your application. To retrieve the template and generate the document, follow these steps:
- Create a microflow that either takes an inbound parameter of the object that needs to be exported, or retrieve that object into your microflow.
In the microflow, retrieve a single object which is the template you set up earlier to use for the export.
In your microflow, call the XLSReport.GenerateExcelDoc Java action (available from the module’s JavaActions folder) to pass the required objects to the module.
In your microflow, download the resulting FileDocument object.
Your microflow should look similar to this:
8 Running the Microflow
There are two things missing now from the app:
- There is no data to download
- There is no way to run the microflow
See the sections below to add these missing things.
8.1 Creating Data
To allow you to enter some data, you will need to generate some pages and then enter some data into them by following these steps:
- Right-click on the Policy entity in the domain model and select Generate overview pages….
- Select Policy and click OK.
- Link the generated overview page into the app, either through the home page or the app navigation.
- Run the app and enter some data to create Policy objects.
8.2 Running the microflow
To run the microflow you created above, you will need to create another microflow which is added to the navigation. This microflow should create a PolicyDoc object and associate it with existing Policy objects, making sure that all the associations are committed, and pass this PolicyDoc as the parameter to the microflow. This will export all the Policy objects you associated with the PolicyDoc.
If you create a PolicyDoc with no associations to Policy objects, you will export an empty spreadsheet with the structure defined in the template.