Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Principles of Operation

The Excel Channel renders supported nodes from the abstract report by copying cell patterns from the Excel template(s) and “stamping” them on the Excel report:

  • Cell style is taken from the template.

  • Cell context is taken from data in the report.

  • Unsupported nodes are silently ignored, thus a report intended for Word or online should always (at least partially) be convertible to an Excel document.

Cell Patterns

A cell pattern is a single, rectangular range of cells in a template with a name assigned to it. Names are assigned in Excel either by selecting a cell or cell range, then defining a name for it, or in the Name Manager.

image-20240326-145513.png

See https://bmpi.atlassian.net/wiki/spaces/CRDOC/pages/3252125697/Working+with+Excel+Templates#Supported-Node-Types for the names to be assigned.

  • The style of the cells is copied to the stamped cells in the Excel report. This includes format, font, row height and column width, wrapping, colors, conditional formatting, merging, etc.

  • Some patterns are optional. These are only rendered if defined in the template.

  • The content of the cells is evaluated, then copied. All ${...} expressions in the content will be treated as JavaScript expressions on report specific data.

Identifier

Description

Example

data

The data to be rendered. This is e.g. a node, a row header, a table fact or a report specific data object. See https://bmpi.atlassian.net/wiki/spaces/CRDOC/pages/3252125697/Working+with+Excel+Templates#Supported-Node-Types for details.

${data.mainTitle}

translate

Render inline language dependent content. Takes an ITranslations dictionary object mapping languages to translations.

${translate({ de: "Konto", en: "Account", fr: "Compte" })}

format

Formatter for dates and date periods, where the Excel formats cannot be used.

${translate({ de: "Seit", en: "Since" })} ${format(data.startDate)}

Style and Language Specific Cell Patterns

Whenever a pattern is searched for a node with a specific style, the following names are checked in order:

  1. <style>.<pattern>.<reportLanguage>

  2. <style>.<pattern>

  3. <pattern>.<reportLanguage>

  4. <pattern>

Example: the header pattern when rendering a node with style MyStyle in language de is obtained by looking for MyStyle.header.de, MyStyle.header,header.de, header.

Templates

The template handling of the Excel channel is very similar to the Word Channel. Each Excel report needs at least a main template to render correctly:

  • The main template’s name is taken from the styleSheet property of the report type’s "excel" outputFormat. If not specified, the default excel_standard.xlsx is assumed.

  • The main template can contain any number of cell patterns.

  • The first worksheet in the main template defines the page setup (page size, margins, page header and footer) of each worksheet in the resulting report.

  • The cell patterns defined in a template can be distributed over multiple worksheets to facilitate their organisation. Apart from that and the special role of the first worksheet, the worksheets in a template are not related to the worksheets in the rendered Excel.

Cinnamon may also be configured to support additional templates providing installation wide defaults for cell patterns, using the otherExcelTemplateIds configuration option.

As with Word templates, the actual file name of the template is prefixed by template_. The file name of the default template is therefore template_excel_standard.xlsx.

Language Specific Templates

Each template used (the main template and the configured additional templates) can be present in language specific variants. When e.g. rendering in language de, a styleSheet: "abc.xlsx" will select the template file template_abc.de.xlsx if present, otherwise the language independent file template_abc.xlsx. Language specific templates often add more redundancy and maintenance to a setup, but may be easier to manage than language specific cell patterns in some cases.

Page headers and footers

Page headers and footers set in the first worksheet of the main template are copied to all worksheets produced. They may contain ${...} expressions, like cell patterns. The data attributes supported are the same as for header and footer in https://bmpi.atlassian.net/wiki/spaces/CRDOC/pages/3252125697/Working+with+Excel+Templates#Common-Cell-Patterns.

Supported Node Types

The Excel Channel supports a limited set of report nodes. The other node types do not produce output in the Excel document.

Common Cell Patterns

For all supported nodes, the following cell patterns are rendered:

Pattern Name

Description

Optional

Content Data

header

Rows at the top of a worksheet. Content data is taken from the node creating the new worksheet and the report.

✔️

"data": {
  "mainTitle": <node mainTitle>,
  "subTitle": <node subTitle>,
  "reportName": <report name>,
  "params": <report execution parameters>
}

footer

Rows at the bottom of a worksheet. Content data is the same as for the header.

✔️

As for header.

issue

Cell created when an issue is encountered (e.g. a missing mandatory pattern). Content data is the issue.

"data": {
  "id": <issue id>,
  "description": <issue description>,
  "severity": "error",
  "source": "rendering"
}

Common Parameters

For all supported nodes, the following parameters are considered:

Parameter

Description

Example

style

The style to apply. Used as name prefix when looking for cell patterns, see https://bmpi.atlassian.net/wiki/spaces/CRDOC/pages/3252125697/Working+with+Excel+Templates#Style-and-Language-Specific-Cell-Patterns.

"parameters": {
  "style": "ReclWhTax",
  ...
}

renderingOptions.excel

The Excel Channel rendering options. The supported options are:

  • worksheetName: Name of the worksheet if this node creates a new worksheet. Note that Excel limits the length of worksheet names to 31 characters.

  • repeatHeaders: Mark tableHeader and columnHeaders to be repeated on each page (VerticalTableNode only). If there are multiple VerticalTableNodes rendered into a single worksheet, only the headers of the last one with this option will be repeated.

  • tableWidth: The total width of all columns of a generically rendered table, see https://bmpi.atlassian.net/wiki/spaces/CRDOC/pages/3252125697/Working+with+Excel+Templates#Generic-Table-Rendering.

"parameters": {
  "renderingOptions": {
    "excel": {
      "worksheetName":  {
        "resolved": "Rückforderbare QST"
      },
      "repeatHeaders": true
    }
  },
  ...
}

Tables: VerticalTableNode

Not surprisingly, a VerticalTableNode is rendered as rows and columns in Excel. There are two ways of rendering an table in Excel: styled and generic.

Styled Table Rendering

By specifying a style on the VerticalTableNode, the table will be rendered row by row. Each row, including the header row, corresponds to a cell pattern. Styled rendering therefore allows full control over the layout in Excel and as well as subselection and reordering of columns.

Generic Table Rendering

VerticalTableNodes without a style are rendered in a generic way. This mode of rendering is similar to the Word Channel: each column is rendered individually, depending on its value type.

Worksheets: SectionNode

A SectionNode renders its titles, and may start a new worksheet.

Simple Text: ParagraphNode

A ParagraphNode is renders its content.

Arbitrary Data: DataNode

A DataNode renders the contents of its data object. It can be used to render arbitrary content to the Excel document, as the type of the data object itself is user defined.

Since the cell patterns depend on the type of data in the object, a DataNode must have a style.

Production Errors: ErrorNode

An ErrorNode (typically the result of an error during report production) renders the error details.

Debugging Excel Rendering

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.