Кажется, это просто не поддерживается.
В исходном коде компонента экспортера, когда дело доходит до при экспорте затрат на строки они жестко запрограммированы на то, чтобы рассматривать первого потомка только для каждой строки Расширение:
if (rowExpansion.getChildren().get(0) instanceof DataTable) {
final DataTable childTable = (DataTable) rowExpansion.getChildren().get(0);
// ...
}
Вот почему вы получаете только первую подстолью в своем выводе.
Используя функцию customExporter , у вас есть возможность расширить ExcelExporter
и переопределить метод exportCells
, который, по-видимому, отвечает за вашу проблему. Затем измените поведение, чтобы сделать цикл на rowExpansion.getChildren()
вместо того, чтобы просто получить первый элемент.
Общие шаги по настройке пользовательского экспортера из связанного сайта :
Шаг 1. Создайте папку с именем META-INF в папке resouces. Ниже
Папка META-INF создает другую папку с именем services.
Шаг 2: создание
файл с именем "ExporterFactory" в качестве службы (полностью двоичное имя
сервис).
Здесь должен быть org.primefaces.extensions.component.exporter.ExporterFactory.
Шаг 3:
Предоставить свои собственные реализации / поставщиков фабрики экспортеров в любом месте
в вашем проекте.
И скопируйте абсолютный путь реализации фабрики пользовательских экспортеров в файл ExporterFactory
Как это сделать: скопировать содержимое файла DefaultExporterFactory и переименовать файл в CustomExporterFactory. Скопировать абсолютный путь
org.primefaces.extensions.showcase.util.CustomExporterFactory в
Файл ExporterFactory.
Шаг 4. Скопируйте реализации экспортера и
добавьте свои собственные изменения. И вызовите эти пользовательские реализации (например,
PDFCustomExporter, ExcelCustomExporter) вместо встроенного
имплементации (например, PDFExporter, ExcelExporter)