Использую Export Actions :: Документация Jmix
Данные выгрузки меняются и чтобы отличать, нужно в конце имени файла и в первой строчке самого Excel файла поставить текущую дату.
Как это можно сделать?
Использую Export Actions :: Документация Jmix
Данные выгрузки меняются и чтобы отличать, нужно в конце имени файла и в первой строчке самого Excel файла поставить текущую дату.
Как это можно сделать?
Здравствуйте,
За генерацию файла Excel отвечает бин ExcelExporter
, Вы можете переопределить его.
Например:
Переопределить метод getFileName(...)
:
public class MyExcelExporter extends ExcelExporter {
protected TimeSource timeSource;
@Autowired
public void setTimeSource(TimeSource timeSource) {
this.timeSource = timeSource;
}
public MyExcelExporter(GridExportProperties gridExportProperties, AllRecordsExporter allRecordsExporter) {
super(gridExportProperties, allRecordsExporter);
}
@Override
protected String getFileName(Table<Object> table) {
return super.getFileName(table) + "_" + timeSource.now();
}
}
Определите бин с аннотацией @Primary
в основном классе приложения:
@Primary
@Bean
ExcelExporter excelExporter(GridExportProperties gridExportProperties, AllRecordsExporter allRecordsExporter) {
return new MyExcelExporter(gridExportProperties, allRecordsExporter);
}
С Уважением,
Никита
Никит, большое спасибо!
У меня получилось
Как при сохранении указать имя файла для Jmix 2.1.3 ?
В ней используется type “grdexp_excelExport” вместо “excelExport”
и имплементировать, как понимаю, нужно не io.jmix.gridexportui.action.ExcelExportAction
Судя по примеру petclinic, имплементируется io.jmix.gridexport:jmix-gridexport-flowui-starter.
Export Actions :: Документация Jmix
Документация по ExcelExportAction для версии 1.5 не подходит для 2-й. Для 2-й ее нет?
Если выбрать “All rows” выдается ошибка:
IllegalStateException: Cannot find a primary key for a meta class Clients.
Clients это DTO сущность, зачем здесь PK? Пагинации для DTO нет и при выборе “Current page” выводится вся информация без PK и без всяких ошибок!!
Т.е. сейчас есть 3 вопроса для 2-й версии jmix :
Здравствуйте,
Да, вы правы вам необходимо для версии Jmix 2.x, добавить зависимость:
implementation 'io.jmix.gridexport:jmix-gridexport-flowui-starter'
Docs: Grid Export Actions :: Jmix Documentation
По вашим вопросам:
Проверю ошибку, которая у вас возникает и отпишу вам по результату.
1 - Зависимость, которую вы добавили подключает action для выгрузки данных в excel, вы можете посмотреть на реализацию самого action и вызвать ExcelExporter
напрямую в вашем коде.
2 - Если вы будете вызывать ExcelExporter
самостоятельно, то сможете используя метод setFileName(..)
установить имя файла.
Также в ближайшем обновлении появится более удобный способ установить имя непосредственно в ExportAction
.
3 - Excel есть форматирование ячеек, вероятно применяется стандартное форматирование, которое и предоставляет данный вид. Простого способа его исправить нету, если только переопределять метод io.jmix.gridexportflowui.exporter.excel.ExcelExporter#exportDataGrid
и добавить собственный формат.
Примечание:
Рекомендую вам подключить Reports Add-on, в котором вы сможете более тонко сгенерировать отчёт в Excel. Там же можно решить проблему и с установкой имени выходного файла и с форматированием, настроев его в шаблоне отчёта или используя форматтеры.
И используя аддон вы сможете воспользоваться ReportRunner, чтобы вызывать генерацию отчёта из любого места.
С Уважением,
Никита
Добрый день.
Но и после переопределения можно будет только, как в ExcelExportAction 1.5 назначить общий формат вида:
excelExporter.integerFormat=#,##0
excelExporter.doubleFormat=#,##0.00##############
а для конкретной колонки формат указать нельзя?
Тогда кмк вы правы, лучше сразу смотреть в сторону Reports Add-on, спасибо за ссылки.
Еще остался вопрос по ошибке при выборе “All rows” для DTO сущности.
Здравствуйте @job_oleg,
Вывод в ExcelExporter
происходит с помощью библиотеки POI. Вы можете в методе io.jmix.gridexportflowui.exporter.excel.ExcelExporter#exportDataGrid
задать формат для определенной колонки, например по ID колонки, но данное изменение будет затрагивать export и в других таблицах, там где используется данный action.
По ошибке, не получилось воспроизвести. Можете прислать демо проект с данной проблемой?
С Уважением,
Никита
Проект связан с бд oracle, поэтому на стороне ошибку вряд ли получится воспроизвести.
Могу лишь добавить, что если в DTO сущности к полю с id добавить аннотацию @JmixId, то при выборе “All rows” в окне Confirmation ошибки не возникает, но экспортируются только заголовки без записей.
Проблему можно обойти вызовом exportDataGrid с ExportMode.CURRENT_PAGE без вывода окна.