Since version 1.53.4 we have introduced couple of experimental APIs which help you to make a bridge between ConfiForms web-services backed fields and Excel files attached to your Confluence page.


3 services:


These 2 APIs are available at the following URLs:

File formatAPI URLMethod
Excel 97-2004 (xls)https://YOUR_CONFLUENCE_SERVER/ajax/confiforms/rest/excel-2json.actionGET
Excel (xlsx)https://YOUR_CONFLUENCE_SERVER/ajax/confiforms/rest/excel2007-2json.actionGET
CSV (default format)https://your_confluence_server/ajax/confiforms/rest/csv-2json.actionGET


Services expect/support the following parameters:

ParameterDescriptionTypeRequired
attachmentIdAttachment ID of the Excel file attachment to use as sourceNumericYes
skipRowsNumber of rows to skip (from the top). Defaults to 0 (rows to skip, from the top of the sheet)NumericNo
idCellNumWhich column to use as IDNumericNo
labelCellNumWhich column to use as labelNumericNo

lookupValue

Since 2.27.21 

Can supply a lookup value for the service to lookup. The subset returned will be filtered to match (as substring) the given valueTextNo

lookupField

Since 2.27.23

Limiting the matching logic to specific field (cell)

Example: cell1 to limit to cell1 value only. If not specified then the match for given lookupValue is done against the whole row (all cells)

TextNo

exactMatch

Since 2.27.24

You can set the search to use "exact match", by default (when exactMatch is unspecified or false) the search is done as text substring match (case insensitive)

BooleanNo

Column and rows numbering starts with 0

NB! Only the first sheet from Excel file is currently supported!


Examples:

https://YOUR_CONFLUENCE_SERVER/ajax/confiforms/rest/excel-2json.action?attachmentId=2195459&skipRows=1&idCellNum=0&labelCellNum=1

https://YOUR_CONFLUENCE_SERVER/ajax/confiforms/rest/excel2007-2json.action?attachmentId=2195460&skipRows=1

Last example reads ALL the rows and columns (skipping just the first one) and creates a structure similar to the one listed below

[
  {
    "cell2": "uno",
    "cell3": "in cell 3",
    "cell1": "1"
  },
  {
    "cell2": "duo",
    "cell1": "2"
  },
  {
    "cell2": "tres",
    "cell3": "here is cell three",
    "cell1": "3"
  },
  {
    "cell2": "four",
    "cell1": "4"
  },
  {
    "cell2": "five",
    "cell1": "5"
  },
  {
    "cell2": "six",
    "cell1": "6"
  }
]

From the following excel file

As you can see, we can create a JSON Array structure that perfectly fits our ConfiForms web-service enabled fields

So, here is how you can create a ConfiForms Form which uses this file and shows it's values in the dropdown


Configuration for ConfiForms looks like this

With "myvalues" field configured as web-service dropdown

We have defined new connection to use the above mentioned excel to JSON APIs


And set the mapping to use cell1 as ID column for the dropdown and cell2 as a label


And you can see the online results right here


All the registrations so far (and yes, we can access ANY other field, like cell3 in our views, see below)