JXLS: формулы над динамическими сетками (Grid-Command) не работают
У меня есть шаблон jxls, который выглядит следующим образом: http://prntscr.com/honxpn
Я использую этот код Java:
try (FileInputStream inputStream = new FileInputStream(this.getTemplatePath().toFile()))
{
Context context = new Context();
context.putVar("headers", this.getTemplateMetadata().getLabelSet("Table"));
context.putVar("metadata", this);
List<List<String>> dataGrid = <code to create grid>
context.putVar("data", dataGrid);
JxlsHelper jxlsHelper = JxlsHelper.getInstance();
jxlsHelper.processGridTemplate(inputStream, outputStream, context, null);
}
Динамическая сетка отлично работает и генерирует электронную таблицу, например: http://prntscr.com/honzfw
В клетке B5
У меня есть эта простая формула: =COUNTIF(D9, "SUCCEEDED")
(У меня есть похожая формула в B6
).
- Формула просто возвращается
0
, Я прошелorg.jxls.util.JxlsHelper.processGridTemplate(InputStream, OutputStream, Context, String)
и его зависимости, и я вижу, что даже еслиxlsArea.processFormulas()
вызывается послеxlsArea.applyAt
и даже если сама формула найдена правильно и т. д. в ссылочных ячейках,D9:D?
нет данных вTransformer
объект. - Я пробовал разные вещи (ни одна из которых не имела значения):
- Поместите формулу в
$[]
- Изменена формула на
=COUNTIF(D9:D100, "SUCCEEDED")
думая, что, возможно, JXLS не будет автоматически расширять диапазон в соответствии с выводом сетки (так и должно быть) - Задавать
jxlsHelper.setUseFastFormulaProcessor(false);
- Изменено с
jx:area(lastCell="B9")
вjx:area(lastCell="D9")
думая, что, возможно, они необходимы для охвата столбца, на который ссылается формула (в этом нет необходимости)
- Поместите формулу в
Я уверен, что формулы должны работать с динамическими сетками, но я буду проклят, если смогу понять, что не так.