Skip to main content

How to Format Your XLSX File for Glossary Import

The exact XLSX column layout, headers, and formatting rules wxrks requires for a successful glossary import.


How to Format Your XLSX File for Glossary Import

wxrks reads a glossary import file by matching the column headers in its first row, not by fixed column positions — so getting those header names and the file's layout exactly right is what determines whether your terms, definitions, and custom attributes come in correctly. This article is the definitive reference for that exact layout.

💡 Who is this for? This guide is for Account Admin who needs to format an XLSX file so a glossary import applies the right terms, statuses, and custom attributes on the first try within the wxrks platform.


Before you import

The Import File button lives on the glossary's own page (Context > Glossaries > select a glossary). It only accepts .tbx or .xlsx files — not .csv or .xls — and you can select up to 60 files in one go.

Only Account Admin can see and use this button — glossary import requires the GLOSSARY_create permission, which isn't granted to Project Manager or Vendor roles. If you don't see Import File on a glossary you expect to manage, ask your account's Account Admin to run the import or to grant you that role.

Glossary detail page with the Import File button highlighted
Import Glossary modal showing the accepted .tbx or .xlsx formats and file picker

There's no downloadable template. wxrks doesn't ship a sample import file or a "download template" option. The reliable workaround: export any existing glossary as .xlsx (Actions > Export > choose the XLSX format) and reuse its header row — export and import share the same header vocabulary, so a file that came out of wxrks is already formatted correctly to go back in. See How to export the Glossary for the full download flow.

Export Glossary modal with the XLSX format option highlighted

How wxrks reads the file

  • Only the first sheet in the workbook is read. If you're editing an exported file, keep everything on that first sheet.

  • The first row must be a header row — a file without one fails to import at all.

  • Headers are matched by their exact text, case-insensitively (extra leading/trailing spaces are trimmed, but there's no fuzzy matching) — a column titled status, Status, or STATUS all work the same way.

  • Each row is one concept. wxrks groups every language's term for that concept onto a single row.


Column layout: one repeating block per language

A valid file needs exactly one required thing: at least one column headed with a language code. Everything else is optional. The full pattern looks like this:

Concept ID, en_us, [en_us attributes...], pt_br, [pt_br attributes...], ...
  • Concept ID (optional, one column, shared across all languages in the row) — paste an existing concept's UUID to add this row's terms to that concept instead of creating a new one. Leave it blank, or use a value that doesn't match any existing concept, and wxrks creates a new concept for the row.

  • Language column (required, one per language) — headed with the exact language code, e.g. en_us or pt_br. Both underscore (en_us) and hyphen (en-us) separators work, in any case. This column holds the actual term text for that language.

  • Attribute columns (optional, following their language column) — any of the fields below, or a custom attribute (see next section).

The attribute columns wxrks recognizes for each language, in the order wxrks itself uses when you export a glossary (matching this order isn't required — headers are matched by name, not position — but it keeps a hand-edited file consistent with an exported one):

Header

What it sets

Accepted values

Term ID

Updates an existing term instead of creating a new one

A term's UUID

Status

The term's approval state

Under_Review, Approved, Published, Preferred, Deprecated — defaults to Approved if left blank or unrecognized

Definition

The term's definition

Free text

Forbidden

Whether the term should never appear in a translation

Boolean — see the note below

Case

Whether the term is case-sensitive

Boolean — see the note below

Usage

Usage notes for the term

Free text

Part of Speech

Grammatical category

Noun, Pronoun, Adjective, Determiner, Verb, Adverb, Preposition, Conjunction, Interjection, Acronym, Other, Proper Noun, Undefined

Gender

Grammatical gender

Masculine, Feminine, Neutral, Undefined

Note

An internal note about the term

Free text

Term Type

Whether the term is a full term or an acronym

Full, Acronym

For Status, Part of Speech, Gender, and Term Type, spaces, hyphens, and underscores are interchangeable and case doesn't matter — under review, Under-Review, and UNDER_REVIEW all resolve the same way.


Example header row

A file with English and Brazilian Portuguese terms, a couple of standard attributes, and one custom attribute might look like this:

Concept ID

en_us

Status

Forbidden

Category:multi_select

Category:options

pt_br

Status

(blank)

Widget

Approved

false

Hardware;Software

Hardware;Software;Marketing

Bugiganga

Approved

Because Concept ID is blank, this row creates a new concept with two terms ("Widget" in English, "Bugiganga" in Portuguese) and one custom attribute, Category, set to Hardware and Software on the English term.


Adding custom attributes

Any header inside a language's block that isn't one of the fields above (and isn't Concept ID) is imported as a custom attribute on that language's term. Name it AttributeName:Type, where Type is one of:

  • single_value — a single free-text value (this is also the default if you omit :Type entirely, or use a type wxrks doesn't recognize)

  • single_select — one value chosen from a predefined list

  • multi_select — multiple values in one cell, separated by semicolons (e.g. Hardware;Software)

⚠️ A header ending in :options is not a place to enter a value on every row. It declares the attribute's allowed values, entered once, in row 2 (the file's first data row), semicolon-separated — any content in that column on other rows is ignored. The per-row values themselves still go in the separate AttributeName:Type column with the same attribute name. In the example above, Category:options in row 2 sets the full allowed list (Hardware;Software;Marketing) for the Category attribute, while Category:multi_select carries each row's actual value(s). Mixing these up — typing per-row values into the :options column, or leaving it off when you meant to expand the allowed list — is one of the easiest mistakes to make in an import file.


Behavior to know before you import

  • A row is silently skipped, not reported as a failed import, when its language code isn't one wxrks recognizes, or when that language's own term-text cell is blank. If an import's concept count looks lower than you expected, check for rows like this rather than assuming something else went wrong.

  • Forbidden and Case only read the exact text true (any capitalization) as true. Anything else in that cell — 1, yes, or simply leaving it blank — is read as false; there's no separate "unset" state.

  • Importing doesn't overwrite a concept wholesale — pairing a row's Concept ID with an existing concept adds or updates just the terms present in that row, without touching that concept's other languages.

This article covers the main glossary Import File flow described above. The Terminology Board has its own, separate XLSX upload for proposing terms into its review workflow — see Terminology for that format.



Did this answer your question?