Действия экспорта
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.00
JsonExportAction
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");
}