JXLS. Как разместить разные коллекции на разных листах?

Я пытаюсь поместить две коллекции в документ Excel. Я делаю это:

context.putVar("collection1", collection1);
context.putVar("collection2", collection2);    
xlsHelper.getInstance().processTemplate(getClass().getClassLoader().getResourceAsStream("templates/exceldocument.xls"), os, context);

Документ Excel имеет два листа, один лист, где collection1, а другой лист, где collection2.

Но когда я это делаю, на один лист помещается только одна коллекция.

Как разместить две коллекции на разных листах?


person Jennifer    schedule 30.05.2017    source источник


Ответы (1)


Вы можете создать список областей XLS и обрабатывать их вручную по своему усмотрению. Код может выглядеть так

Transformer transformer = TransformerFactory.createTransformer(is, os);
AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer);
List<Area> xlsAreaList = areaBuilder.build();
Area sheet1Area = xlsAreaList.get(0);
Area sheet2Area = xlsAreaList.get(1);
sheet1Area.applyAt(new CellRef("sheet1!A1"), context); // process sheet1
sheet2Area.applyAt(new CellRef("sheet2!A1"), context); // process sheet2
transformer.write();

На самом деле довольно легко добавить аналогичную поддержку в JxlsHelper, так что не стесняйтесь предлагать улучшения в отслеживание ошибок Jxls для улучшения JxlsHelper.

См. также XlsCommentBuilderDemo пример кода для более подробного примера.

person Leonid Vysochyn    schedule 30.05.2017