Using ShowPivotTableAction
ShowPivotTableAction is a special action that allows you to export data from components that extend ListDataComponent, such as DataGrid and TreeDataGrid, to a Pivot Table.
The simplest way to use this action is to define it within your dataGrid and then associate it with a button.
<dataGrid id="tipInfoesDataGrid"
          dataContainer="tipInfoesDc"
          minWidth="100px"
          width="100%">
    <actions>
        <action id="showPivotTableAction" type="pvttbl_showPivotTable"/>
    </actions>
</dataGrid>You can also create the action programmatically within your view controller and use it with a button.
@Subscribe
public void onInit(final InitEvent event) {
    ShowPivotTableAction<TipInfo> showPivotTableAction =
            actions.create(ShowPivotTableAction.ID);
    showPivotTableAction.setTarget(tipInfoesDataGrid);
    showManualSetPivotTableActionButton.setAction(showPivotTableAction);
    showManualSetPivotTableActionButton.setText(
            messages.getMessage(getClass(), "manualSetShowActionButton.text"));
}ShowPivotTableAction has two modes for exporting data:
- 
All rows: Exports all rows in the DataGridorTreeDataGrid.
- 
Selected rows: Exports only the selected rows in the DataGridorTreeDataGrid.
If no rows are selected, all rows will be exported by default without confirmation.
A pivot table in UI Mode will be displayed in a new tab. By default, all attributes included in the component’s data container view will be shown, except for:
- 
Attributes of type Collection.
- 
Attributes of type byte[](byte array).
- 
UUIDattributes.
- 
Attributes annotated with @SystemLevel. 
To exclude certain attributes or include only a specific subset, use the PivotTableViewBuilder Spring bean. This bean provides a fluent API for configuring the pivot table component in the opened view.
To implement custom configuration, handle the ActionPerformedEvent.
@Subscribe("tipInfoesDataGrid.customShowPivotTableAction")
public void onCustomShowPivotTableAction(final ActionPerformedEvent event) {
    PivotTableViewBuilder builder = getApplicationContext().getBean(
            PivotTableViewBuilder.class, tipInfoesDataGrid);
    Renderers renderers = new Renderers();
    renderers.setSelectedRenderer(Renderer.TABLE);
    renderers.setRenderers(List.of(Renderer.TABLE, Renderer.TABLE_BAR_CHART, Renderer.HEATMAP,
            Renderer.ROW_HEATMAP, Renderer.COL_HEATMAP));
    builder.withIncludedProperties(Arrays.asList("sex", "smoker", "day", "time")) (1)
            .withRows(Arrays.asList("sex", "smoker"))
            .withColumns(Arrays.asList("day", "time"))
            .withRenderers(renderers)
            .withItems(tipInfoesDataGrid.getItems().getItems()) (2)
            .show();
}| 1 | The withIncludedProperties()method only considers the properties you explicitly include, ignoring all others. To exclude specific properties, use thewithExcludedProperties()method. | 
| 2 | All other methods starting with "with"can be used to configure Pivot Table options. These include methods likewithHiddenFromAggregations(),withHiddenFromDragDrop(),withAggregationProperties(), and more. | 
You can export the displayed Pivot Table data to Excel (if the current renderer is supported). A corresponding button will be displayed by default in the opened tab for this purpose.