"I know Excel"

How to change the delimiter when exporting CSV from Excel?

This post was most recently updated on August 25th, 2021.

4 min read.

Recently, I needed to find a way to import data from an old Excel-file to a custom-coded system that could import CSV files. However, the data was fairly non-sanitized – containing commas, semicolons and other weird characters. I could define the delimiter used in the imported data – however, that would be useless if I wasn’t also able to define it in the export.

With Excel, it’s not that simple, though. Excel, just like other Microsoft Office applications loves trying its best to respect the regional & localization settings of the machine it’s running on – most often to frustrating results.

However, like with so many other things, you can change the delimiter value used in CSV export by tweaking these settings. And this article describes how!

Background

Table of Contents

Another day, another workaround. If you’re not interested in the background stuff and WHY I ran into this issue, just click to jump right down to the actual solution:
How to export a CSV with custom delimiter using Microsoft Excel

If you’re still here, let’s delve into the background of the issue a bit deeper.

I needed to wrangle data stored in an .xlsx file into another form, that another application could read. This file format happened to be CSV.

What’s a “CSV” -file ?

Stands for “comma-separated values” – A text file that uses a comma to separate values.

Each line of the file is a data record. Each record consists of one or more fields, separated by commas. The use of the comma as a field separator (Delimiter) is the source of the name for this file format.

Normally, that’s simple – just “save as” with a different file format. However, this time I was posed with an issue: the data included both commas (“,”) and semicolons (“;”), both of which are typical delimiters in CSV files. Additionally, I couldn’t wrap the values inside quotes due to limitations in both the export and the import functionality. So I needed to use another character – such as pipe (“|”).

Instead of being able to configure the delimiter in the export (like in any sensible spreadsheet editor, if you ask me!), Excel is just going to use your regional settings and grab the list separator from there. This means that in English, CSV is going to be values limited by commas, like this:

Value1,Value2,Value3,Value4...

But in Finnish, we’ll be using the semicolon – like so:

Value1;Value2;Value3;Value4...

And I could imagine there are plenty of other locales where you might need to tell the values apart with comma instead of semicolon, or vice versa.

But simply changing my region to something else isn’t a solution this time, though – the data I had been supplied had both colons and semicolons in cell values. The data would be incorrectly split and parsed due to that.

However, luckily we can override the delimiter to be almost anything – and it’s all done through the regional settings!

Solution

I found a couple of examples on how to do it in Windows 7 – and obviously, that’ll help you eventually find your way in Windows 10 as well. But always useful to also document the exact steps – the guide below should be accurate for Windows 10 and “close enough” for Windows 7. :)

Here are the steps in writing – see some useful screenshots further below!

Time needed: 10 minutes.

How to export a CSV with custom delimiter using Microsoft Excel:

  1. Make sure Microsoft Excel is closed before trying to change the CSV delimiter

    This is required to make sure Excel picks up your changes.

  2. Open Control Panel

    This can be done by hitting win+r and writing “Control Panel” in the Run-window.

  3. Next, you need to access Regional Settings


    It’s available either under “Region” or “Clock and Region” -> “Region”.

  4. Click the “Additional Settings” -button

    This’ll pop up quite a few additional options!

    Accessing localization settings in Control Panel

  5. Find the “List separator” and change it to your preferred delimiter such as a pipe (“|”).

    While the dropdown might have some prepopulated values, you can actually just safely ignore them and input whatever delimiter you need to use to the textfield directly.


    How to change the delimiter character for your locale in Control Panel

    Note, that there’s at least one, undocumented limitation here: you can’t use the same character as both decimal and list separator! This means that if you’re using regional settings like Finnish, where comma is considered to be decimal separator instead of a full stop or “dot”, you can’t use it as a list delimiter… Before you change the decimal separator to something else, that is :)

  6. Click OK -> OK -> exit Control Panel, after which you can proceed to actually exporting the file!

    With the selection done, just hit “OK” a couple of times and head back to Excel! You should be able to save your file as CSV or use the Export-function – and you should be good this time!

  7. Open the Excel file

    The file you want to export to a CSV with custom delimiter – in my example, to a “pipe delimited file”.

  8. Select File -> Save As

    This should pop up the classic saving dialog – which in Excel comes with some useful options…

  9. Change the ‘Save as type’ to ‘CSV (Comma delimited)(*.csv)

    Admittedly, the name is misleading at that point, but we’ll just have to live with that.

  10. Change the name and file extension if need be

    By default it stays as csv even if you’re using a different delimiter.

  11. Click Save -> OK -> Yes

    And you should be good!


As an interesting side note, you can use completely nonsensical characters as delimiters! Take the picture below as an example – this was actually required for a work project once!

Using horribly weird characters as list delimiters is possible - but probably not advisable.
Using horribly weird characters as list delimiters is possible – but probably not advisable.

References

Big kudos to Barry Stevens for his blog post on the topic and Sami Laiho (or, like he’s better known, “Järjestelmänvalvoja”) for noticing you can’t use the same character as both decimal and list separator 😬

mm
5 10 votes
Article Rating
Subscribe
Notify of
guest
6 Comments
most voted
newest oldest
Inline Feedbacks
View all comments