Поместить две динамические сетки рядом друг с другом с помощью JXLS

Я хочу определить шаблон Excel, который будет использоваться с JXLS (текущая версия 2.2.5) таким образом, чтобы существовала динамическая сетка (т. Е. Я не знаю количество столбцов заранее), а справа от это, другая сетка:

Header 1.1 | Header 1.2 |    | Header 2.1 | Header 2.2 | Header 2.3
-------------------------    --------------------------------------
A            B                 C            D            E
F            G                 H            I            J

Две сетки имеют одинаковое количество строк, но я бы предпочел не объединять их, потому что они имеют разные стили.

Возможно ли это, и если да, то как?

Я попробовал GridCommandDemo из коллекции jxls-demo и поместил некоторый статический текст (для начала) в ячейку справа от области с сеткой, но он был просто перезаписан. Я ожидал, что это будет перемещено вправо.

1 ответ

Решение

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

GridCommandDemo из коллекции jxls-demo демонстрирует простой вариант использования с одной сеткой. Чтобы настроить его для двух сеток, вы должны изменить свой шаблон, добавив дополнительные сетки, а также изменить родительскую область (с помощью атрибута lastCell команды jx:area), чтобы включить все эти сетки.

В этом случае во время преобразования родительской области все сетки и статические данные будут правильно смещены.

Возрождение этой ветки 5-летней давности просто для того, чтобы добавить свой собственный вклад, поскольку принятый ответ (или ответ на него) на самом деле не раскрывает всей истории.

В итоге я использовал одну область (в моем случае) для обеих сеток:

jx:area(lastCell="B7")

Ячейка B7 - последняя ячейка моей второй сетки. Первая сетка:

jx:grid(lastCell="B4" headers="firstGridHeaders" data="firstGridData" areas=[B3:B3, B4:B4])

Вторая сетка:

jx:grid(lastCell="B7" headers="secondGridHeaders" data="secondGridData" areas=[B6:B6, B7:B7])

Затем для обработки шаблона я использовал JxlsHelper.getInstance(). ProcessGridTemplate, потому что, как правильно упомянул @Matthias, вы не можете использовать processGridTempalteAtCell, поскольку он всегда ожидает только одну сетку.

Другие вопросы по тегам