Действия экспорта
ExportAction
ExportAction - это базовое действие списка, предназначенное для экспорта содержимого таблицы данных с использованием указанного экспортера. Для этого действия требуется экземпляр DataGridExporter.
Это действие можно настроить для использования с компонентами dataGrid и treeDataGrid.
В ExportAction доступны методы для управления функциями, которые извлекают значения из колонок DataGrid:
- 
addColumnValueProvider()добавляет функцию для получения значений из колонки.
- 
removeColumnValueProvider()удаляет функцию-провайдер значений колонки поidколонки.
Режимы экспорта
ExportAction имеет три режима экспорта: все строки, текущая страница и выбранные строки.
 
- 
Опция All rows экспортирует все записи базы данных, соответствующие примененному фильтру и начальному запросу, использованному для заполнения данных экрана. Загрузка и экспорт данных происходят пакетами для оптимизации производительности и управления использованием памяти. Размер пакета настраивается через свойство приложения jmix.gridexport.export-all-batch-size. Размер пакета по умолчанию - 1000.При экспорте всех записей стратегия пагинации по умолчанию - keyset. Чтобы изменить это, используйте свойство приложения jmix.gridexport.export-all-pagination-strategy.
- 
Опция Current page экспортирует только содержимое, отображаемое на текущей странице таблицы данных. 
- 
Опция Selected rows экспортирует только записи, выбранные в таблице данных. 
Набор опций экспорта может быть определен конкретным действием с помощью его метода setAvailableExportModes() и соответствующего свойства availableExportModes в XML. Набор опций по умолчанию определяется свойством приложения jmix.gridexport.default-export-modes.
Вы можете переопределить заголовок и сообщение диалогового окна, добавив сообщения с ключами exportConfirmationDialog.header и exportConfirmationDialog.message в ваш пакет сообщений.
Экспорт колонок
Вы можете управлять тем, какие колонки включаются в экспорт, используя три различных варианта фильтрации:
- 
Предопределенный предикат фильтрации колонок Эта опция позволяет выбрать из предопределенного набора поведений фильтрации, чтобы определить, какие колонки экспортируются. Настройте это с помощью свойства приложения jmix.gridexport.default-columns-to-export или дополнительного свойства columnsToExportнепосредственно в действии экспорта. Доступные варианты:- 
ALL_COLUMNS: Экспортирует все колонки, независимо от видимости.
- 
VISIBLE_COLUMNS: Экспортирует только колонки, видимые в данный момент вDataGrid. Колонки, отмеченные как видимые с помощью компонента gridColumnVisibility, включаются в список экспортируемых колонок. Это означает, что скрытые колонки будут исключены.Значение по умолчанию для новых проектов - VISIBLE_COLUMNS. В существующих проектах предыдущее поведение экспорта (вероятно,ALL_COLUMNS) будет перенесено в файлapplication.properties.Ниже приведен пример, показывающий, как настроить экспорт всех колонок для dataGridклиентов.<dataGrid id="customersDataGrid" dataContainer="customersDc" width="100%" minHeight="20em"> <actions> <action id="excelExport" type="grdexp_excelExport"> <properties> <property name="columnsToExport" value="ALL_COLUMNS"/> </properties> </action> </actions> <columns> <column property="firstName"/> <column property="lastName"/> <column property="email"/> <column property="age"/> </columns> </dataGrid>Этот метод имеет наименьший приоритет; более специфичные методы переопределят эту настройку. 
 
- 
- 
Гибкий предикат фильтрации Этот механизм обеспечивает высоконастраиваемую логику выбора колонок. Создайте метод, аннотированный @Install, предназначенный для действия экспорта. Этот метод получает объектGrid.Columnи возвращаетtrue, если колонка должна быть экспортирована, иfalseв противном случае.@Install(to = "customersDataGrid.excelExport", subject = "columnsExportFilter") private boolean customersDataGridExcelExportColumnsExportFilter( final Grid.Column<Customer> column) { return column.getKey().contains("firstName") || column.getKey().contains("email"); }Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню Code → Generate (Alt+Insert / Cmd+N). Этот подход имеет средний приоритет, то есть он переопределит предопределенный предикат фильтрации колонок, но будет переопределен явным указанием ключей колонок. 
- 
Явное указание ключей колонок: Этот вариант обеспечивает самый прямой контроль над тем, какие колонки экспортируются. Используйте дополнительное свойство columnKeysToExportдействия экспорта, чтобы определить разделенный запятыми список ключей колонок для экспорта в определении<action>:<action id="excel" type="grdexp_excelExport"> <properties> <property name="columnKeysToExport" value="email, firstName, lastName"/> </properties> </action>Этот вариант имеет наивысший приоритет и переопределит любые другие настройки. 
Порядок приоритета. Итак, варианты фильтрации обрабатываются в следующем порядке:
- 
Явное указание ключей колонок. 
- 
Гибкий предикат фильтрации. 
- 
Предопределенный предикат фильтрации колонок. 
ExcelExportAction
ExcelExportAction - это действие, расширяющее ExportAction и предназначенное для экспорта содержимого таблицы данных в формате XLSX.
Действие реализовано классом io.jmix.gridexportflowui.action.ExcelExportAction и должно быть определено в XML с использованием атрибута действия type="grdexp_excelExport" для компонента списка. Общие параметры действия можно настроить через XML-атрибуты внутри элемента action. Для получения дополнительной информации обратитесь к документации Декларативные действия.
Например:
<actions>
    <action id="excelExport" type="grdexp_excelExport"/>
</actions>Альтернативно, вы можете инжектировать действие в контроллер экрана и настроить его параметры с помощью методов-сеттеров:
@ViewComponent("customersDataGrid.excelExport")
private ExcelExportAction customersDataGridExcelExport;
@Subscribe
public void onInit(final InitEvent event) {
    customersDataGridExcelExport.setText("Export data grid to Excel");
}Вы также можете переопределить локализованные строки формата данных. Настройки строк формата по умолчанию для экспорта в Excel выглядят следующим образом:
excelExporter.label=Excel
excelExporter.true=Yes
excelExporter.false=No
excelExporter.empty=[Empty]
excelExporter.bytes=<bytes>
excelExporter.timeFormat=h:mm
excelExporter.dateFormat=m/d/yy
excelExporter.dateTimeFormat=m/d/yy h:mm
excelExporter.integerFormat=#,##0
excelExporter.doubleFormat=#,##0.00##############
excelExporter.decimalFormat=#,##0.00JsonExportAction
JsonExportAction - это действие, расширяющее ExportAction и предназначенное для экспорта содержимого таблицы данных в формате JSON.
Действие реализовано классом io.jmix.gridexportflowui.action.JsonExportAction и должно быть определено в XML с использованием атрибута действия type="grdexp_jsonExport" для компонента списка. Общие параметры действия можно настроить через XML-атрибуты внутри элемента action. Для получения дополнительной информации обратитесь к документации Декларативные действия.
Например:
<actions>
    <action id="jsonExport" type="grdexp_jsonExport"/>
</actions>Альтернативно, вы можете инжектировать действие в контроллер экрана и настроить его параметры с помощью методов-сеттеров:
@ViewComponent("customersDataGrid.jsonExport")
private JsonExportAction customersDataGridJsonExport;
@Subscribe
public void onInit(final InitEvent event) {
    customersDataGridJsonExport.setText("Export data grid to JSON");
}