5.5.1.1. Excel-шаблоны (.xls, .xlsx, .xlsm)

В ApplicationServer используется прямое заполнение шаблона через Aspose.Cells. OLE Automation (заполнение через MS Excel) не используется.

Если в данном разделе встречается пометка “не подтверждено”, это означает:

  • Функциональность отчетов, работавшая в Global 1, может не работать при построении отчета на сервере приложений Global.

  • Работу функциональности необходимо проверить на реальном решении для сервера приложений Global.

5.5.1.1.1. Базовая разметка

Теги в Excel-шаблонах:

  • Подстановка значения:

    [#AttributeName#]

  • Открытие секции:

    [#&SectionName#]

  • Закрытие секции (после имени может быть макрокод):

    [#/SectionName  <macro code>#]

Если атрибут не найден, значение заменяется на пустую строку. Для обращения к мастер-выборке используйте super$:

[#super$AttributeName#]

5.5.1.1.2. Секции и SQL

Открывающий тег может ссылаться на выборку или содержать SQL:

  • Выборка: [#&EntityName.Representation#]

  • SQL: [#&SectionName = select ...#]

Тело секции повторяется для каждой строки выборки.

5.5.1.1.3. Многострочный открывающий тег

Added in version v1.27.0-ms17.

Для длинных SQL-разметок открывающий тег секции можно разнести по нескольким строкам в одном столбце:

A1: [#&SectionName = select ...
A2:     ... продолжение ...
A3:     ... продолжение ... #]

Правила:

  • [#& должен начинаться в ячейке (допускаются пробелы перед ним).

  • Продолжение размещается в ячейках ниже того же столбца.

  • Закрывающий #] находится в одной из строк продолжения.

  • Эти строки не попадают в результат (они являются частью открывающего тега).

5.5.1.1.4. Подстановка значений в ячейках

  • Если ячейка содержит только один тег, значение записывается с типом (число, дата, boolean и т.д.).

  • Если в ячейке есть текст и теги вместе, теги заменяются строковыми значениями, результат записывается как строка.

5.5.1.1.5. Размножаемые колонки

Поддерживается синтаксис param[*] для размножения колонок. Колонка копируется по количеству ключей param[<key>] в выборке.

Note

Поддержка нескольких тегов в одной ячейке при использовании param[*] не подтверждена в AS и требует проверки.

5.5.1.1.6. Встроенные функции (макроязык)

Функции применяются внутри тегов, например [#FNum(nPrice,2)#]. Поддерживается вложение функций.

Доступные функции:

  • NVL(attr, text)

  • FNUM(attr, digits)

  • LPAD(attr, width)

  • RPAD(attr, width)

  • NumberToStrRUS(attr)

  • ParamValueByName(param)

  • RowNum()

  • RowCount()

  • Date()

  • Time()

  • DateTime()

  • SUM(attr, param)

  • Set(value, param)

  • Multiply(a, b)

  • Divide(a, b)

  • Minus(a, b)

  • Plus(a, b)

  • Percent(a, b)

Ограничения макроязыка в AS:

Changed in version v1.27.0-ms17: Литералы в параметрах функций поддерживаются. Пример: Plus(10, 10).

  • SUM и Set допустимы только в закрывающем теге секции, допускается несколько команд, разделенных ;.

5.5.1.1.7. Макросы Excel

AS сохраняет содержимое шаблона, но выполнение макросов на стороне сервера не производится. Поддержка VBA-макросов в .xlsm и перенос макросов в итоговый файл не подтверждены и должны быть проверены в целевом решении.

5.5.1.1.8. Пример (текстовое представление)

A1: [#&Orders = select ...#]
A2: [#OrderId#]    [#OrderDate#]    [#Total#]
A3: [#/Orders#]