Table with dynamic columns
Using tables for printing lists of structured data is convenient and effective for printing
invoice items or shipping items.
However, you will not always have a predefined set of table columns but instead need the table columns created dynamically to get it to grow both horizontally and vertically based on given data. In ReportBro this can be achieved by using simple list parameters.
1 Set up parameters for dynamic columns
Let's take the example of a report on working time of employees. We have a number of employees that spend their time working on different projects. We'd like to get a report that shows how much time each employee spends on which project. Both entities are dynamic as both employees and projects cannot be predefined as fixed values.
First of all we need a parameter of type simple list for the table columns:
Because it's a simple list parameter we define the data type the simple list is going to expect - text. Now let's add some projects as test data.
Next we create the parameters for the table rows. Each row entry is composed
of an employee name and time values, hence we need a parameter of type list:
Inside this list we create parameters for employee name and time:
- employee (text)
- time (simple list)
We use a simple list with data type text again for the time value. The test data popup shows a column for each of the parameters but allows us to add more columns for the simple list parameter time. Let's add the same amount of columns for the simple list as we have defined for the projects and fill some rows of data.
2 Create a dynamic column table
Finally, we are ready to create the table and apply the parameters (if you are new to ReportBro you can find a tutorial on how to add a table here).
The data source has to be the parameter of type list:
By setting our simple list parameter projects in the second header column the table columns will be automatically expanded horizontally to show all items of this parameter.
The content part contains the employee name and the working time spent for each project.
Bro tip: Make sure that your document layout is wide enough to hold all expected columns to be printed. This won't be an issue with XLS but PDF requires predefined page dimensions.
By the way, ReportBro is also available for everyone as open-source on github (see Download page). Star us on github if you like what you see!