Поместить две динамические сетки рядом друг с другом с помощью 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, поскольку он всегда ожидает только одну сетку.