dwcready

Turning an Excel spreadsheet into a Darwin Core Archive

Excel (.xlsx / .xlsm) → Darwin Core Archive

What you are seeing — your records are in a workbook and every publishing route seems to assume they are already in Darwin Core.

The short answer

A Darwin Core Archive is a zip file containing a delimited text table of your records, a meta.xml that says which column is which Darwin Core term, and an eml.xml describing the dataset. The hard part is not the zip — it is deciding what each of your columns means, and that decision is the one that has to be right.

A workbook converts cleanly when it is one table: a single header row at the top, one record per row, no merged cells, no totals row at the bottom, and no blank spacer rows. Anything else is a layout, and a layout has to become a table before it can become anything else.

Four habits cost data. Merged cells mean the value belongs to the first cell and the others are empty, so a species name merged across five rows arrives on one row and blank on four. Units in the headerdepth (m) — leave the unit outside the data, where nothing downstream can read it. Colour as meaning is invisible in every export format there is. Multiple sheets that are really one table split by year or site: whatever distinguishes the sheets is in the tab name, and a tab name is not a column. We refuse parallel sheets rather than concatenating them, because concatenating loses exactly that.

We read .xlsx and .xlsm. We do not read the older .xls or the binary .xlsb, and we refuse them by name rather than failing obscurely — open those in Excel or LibreOffice once and save as .xlsx.

Before you upload

  1. Unmerge every cell and fill the values down.
  2. Move units out of headers and into their own column, or into the value.
  3. Put anything you were encoding as a fill colour into a real column.
  4. If a sheet per site or per year is really one table, add the site or year as a column and stack them.
  5. Leave the headers exactly as they are otherwise — we confirm columns from their values, so an unhelpful header is not fatal and a helpful one is not trusted on its own.
Upload the workbook as it is

You do not need to rename a single column first. We check each one against its own values, build the archive, and hand back an explicit list of everything we could not interpret — including the sheets and columns we deliberately set aside. Free until 1 September, no account, and your records are discarded after the check — we keep the column mapping, never the rows.

Check the file you have →

Why we can say that

5,064records already published to GBIF
0findings in GBIF's vocabulary
4,268findings from ours
31.7%came back clean

We audited a file GBIF had already accepted and served. Their validator answers will this load; these had loaded. Figures read from ops/data.json, not typed into this page. We do not issue a rating of any kind — every finding names the rule it applied and where that rule comes from.

Related