size(userList) //Для получения размера коллекции, указанной в аттрибуте items тега
и
userList[i].name //Для доступа к элементам коллекции
Поэтому встретив тег forEach можно попробовать получить размер коллекции и создать несколько копий строки, заключенной внутри тега. Попутно
в копируемых строках надо будет заменить выражение ${user.name} на ${userList[i].name}
И тогда задача сведётся к уже решённой в статье — поиск тегов и скармливания их commons-jexl
Смотрел на JasperReports, очень хотелось его. Но после того, как скачал Jasper Soft Studio понял, что так просто, с наскока, сколько то сложный шаблон сделать не получится. :( А сделать надо было быстро. Попозже обязательно сделаю ещё одну попытку одолеть Jasper Reports :)
Да, ещё и JETT, но не хотелось тянуть лишние библиотеки в проект. Да и посмотрел на сайте документацию, и не понял, как с помощью JXLS можно «клонировать» не одну страницу из шаблона, а несколько.
public HSSFWorkbook transformMultipleSheetsList(InputStream is, List objects, List newSheetNames, String beanName, Map beanParams, int startSheetNum)
Here
is — InputStream for source XLS template file
objects — List of beans where each list item should be exported into a separated worksheet
newSheetNames — Sheet names to be used for newly created worksheets
beanName — Bean name to be used for a list item when processing sheet
beanParams — Common bean map containing all other objects to be used in the workbook startSheetNum — Worksheet number (zero based) of the worksheet that needs to be used to create multiple worksheets
То есть для создания нескольких листов итогового документа можно использовать только один лист шаблона. Хотя возможно я просто не разобрался.
Apache Commons JEXL library вроде умеет работать с такими конструкциями:
Поэтому встретив тег forEach можно попробовать получить размер коллекции и создать несколько копий строки, заключенной внутри тега. Попутно
в копируемых строках надо будет заменить выражение ${user.name} на ${userList[i].name}
И тогда задача сведётся к уже решённой в статье — поиск тегов и скармливания их commons-jexl
То есть для создания нескольких листов итогового документа можно использовать только один лист шаблона. Хотя возможно я просто не разобрался.