Export a CSV from Excel, Sheets or Numbers

ImportKit accepts .csv files only. Every spreadsheet application can produce one, but a couple of them have a default that quietly mangles accented characters — so here's the exact route through each.

What you're aiming for

A comma-delimited .csv saved as UTF-8, with your header row as the very first row. That's the whole specification.

Google Sheets

The easiest of the four, because it always exports UTF-8 with commas.

  1. File → Download → Comma-separated values (.csv)

One thing to watch: it exports the active sheet only. If your data is spread across tabs, export each tab separately, or consolidate first.

Microsoft Excel

Excel offers several CSV options and they are not equivalent. Pick the UTF-8 one.

  1. File → Save As (on Mac, File → Save a Copy)
  2. In the format dropdown choose CSV UTF-8 (Comma delimited) (.csv) — not plain “CSV (Comma delimited)” and not “CSV (Macintosh)”.
  3. Save. Accept the warning that only the active sheet will be saved.
Excel on a European locale writes semicolons

If your Windows regional list separator is a semicolon, plain “CSV (Comma delimited)” will actually use semicolons. The file uploads, but you'll see one giant column instead of several on the mapping step.

Fixes, in order of preference: use CSV UTF-8 (Comma delimited); or change the list separator in Windows Settings → Time & language → Region → Additional settings; or open the file in a text editor and replace the semicolons.

Apple Numbers

  1. File → Export To → CSV…
  2. Open Advanced Options and set Text Encoding to Unicode (UTF-8).
  3. Export.

Numbers exports one file per table, so a sheet with several tables produces several files. Keep one table per sheet to avoid surprises.

LibreOffice Calc

  1. File → Save As, format Text CSV (.csv).
  2. Tick Edit filter settings, then save.
  3. In the dialog: character set Unicode (UTF-8), field delimiter ,, string delimiter ".
  4. Tick Quote all text cells if your data contains HTML or commas — harmless either way.

Before you export

Five minutes here saves a round of failed rows.

  1. Put the header row first

    Delete any title row, logo row or blank row above your headers. ImportKit reads row 1 as the header row, whatever is in it.

  2. Format ID and SKU columns as Text

    Select the column, then Format → Cells → Text (Sheets: Format → Number → Plain text). Without this, spreadsheets turn 8123456789012 into 8.12346E+12 and lose digits, and strip leading zeros from SKUs like 0042-BLK.

    Do this before pasting the values, not after — the damage happens on paste.

  3. Unmerge any merged cells

    Merges don't survive a CSV export. Unmerge and repeat the value on every row.

  4. Delete trailing rows and columns

    Truly empty rows are skipped automatically, but a row containing a single stray space isn't empty. Select the rows below your data and delete them outright.

  5. Turn off autocorrect for JSON cells

    If you're typing money or rating values, autocorrect will turn " into curly quotes and break the JSON. Disable smart quotes, or build those cells in a plain text editor.

  6. Check your list cells

    For a list.* field, one cell holds all the items: Waterproof, Lightweight, Recycled. If an item itself contains a comma, use line breaks within the cell instead — Alt+Enter on Windows, Ctrl+Option+Enter in Sheets — and newlines become the separator. Value formats →

Check the export actually worked

Open the saved .csv in a plain text editor — TextEdit, Notepad, VS Code — not back in Excel. You should see something recognisable as CSV:

good-export.csv
name,key,type,ownerType
Care guide,care_guide,multi_line_text_field,PRODUCT
"Highlights, key",highlights,list.single_line_text_field,PRODUCT
If you seeThe problem
Semicolons between valuesWrong delimiter — re-export as CSV UTF-8
Café instead of CaféNot UTF-8 — re-export with UTF-8 encoding
Tabs between valuesYou saved a TSV. Re-export as CSV
Binary gibberishStill an .xlsx with a renamed extension. Renaming isn't converting
Values wrapped in = or @Formulas were exported literally. Copy → Paste Special → Values only, then re-export

Then upload it

Head to Import, choose your content type, and drop the file in. Anything that isn't a .csv is rejected with “Please upload a .csv file” before it's read.

Then run the pre-import check. It's free, and it's where any remaining export problem shows up as a specific message on a specific row.

Screenshot

Columns detected after upload

The upload step after a successful file selection, showing the detected column list with sample values — proof the delimiter was read correctly.

assets/screenshots/columns-detected.png

Getting data out of Shopify to start with

Often you need a list of product handles before you can build a values file. Shopify's own product export (Products → Export) gives you a CSV including the Handle column, which is exactly what metafield values want in owner_reference.

Export it, delete the columns you don't need, add your owner_type, key and value columns, and you have an import file built from your real catalogue rather than typed by hand.

Next