All streams
Search
Write a publication
Pull to refresh
1
0
Сергей Райшин @eof404

User

Send message
Спасибо! И правда, отличная библиотека! Использовал для формирования docx документов.
В текущем виде не умеет, но я думаю можно попробовать допилить. Первое что пришло на ум — ввести теги, так, как сделано у JETT, ну на пример
<bicycle:forEach var='user' items='userList'>  
    ${user.name}
</bicycle:forEach>

Apache Commons JEXL library вроде умеет работать с такими конструкциями:
size(userList) //Для получения размера коллекции, указанной в аттрибуте items тега
и
userList[i].name //Для доступа к элементам коллекции

Поэтому встретив тег forEach можно попробовать получить размер коллекции и создать несколько копий строки, заключенной внутри тега. Попутно
в копируемых строках надо будет заменить выражение ${user.name} на ${userList[i].name}
И тогда задача сведётся к уже решённой в статье — поиск тегов и скармливания их commons-jexl
Смотрел на JasperReports, очень хотелось его. Но после того, как скачал Jasper Soft Studio понял, что так просто, с наскока, сколько то сложный шаблон сделать не получится. :( А сделать надо было быстро. Попозже обязательно сделаю ещё одну попытку одолеть Jasper Reports :)
К сожалению не следил за потреблением памяти, да и в POI не силён :(. Возможно этот пост сможет ответить: Вышла новая версия Apache POI 3.8
Да, ещё и 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

То есть для создания нескольких листов итогового документа можно использовать только один лист шаблона. Хотя возможно я просто не разобрался.

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity