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).

  1. Формула просто возвращается 0, Я прошел org.jxls.util.JxlsHelper.processGridTemplate(InputStream, OutputStream, Context, String) и его зависимости, и я вижу, что даже если xlsArea.processFormulas() вызывается после xlsArea.applyAtи даже если сама формула найдена правильно и т. д. в ссылочных ячейках, D9:D?нет данных в Transformer объект.
  2. Я пробовал разные вещи (ни одна из которых не имела значения):
    • Поместите формулу в $[]
    • Изменена формула на =COUNTIF(D9:D100, "SUCCEEDED") думая, что, возможно, JXLS не будет автоматически расширять диапазон в соответствии с выводом сетки (так и должно быть)
    • Задавать jxlsHelper.setUseFastFormulaProcessor(false);
    • Изменено с jx:area(lastCell="B9") в jx:area(lastCell="D9") думая, что, возможно, они необходимы для охвата столбца, на который ссылается формула (в этом нет необходимости)

Я уверен, что формулы должны работать с динамическими сетками, но я буду проклят, если смогу понять, что не так.

0 ответов

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