Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSV encoding issues (Microsoft Excel)

I am dynamically creating CSV files using C#, and I am encountering some strange encoding issues. I currently use the ASCII encoding, which works fine in Excel 2010, which I use at home and on my work machine. However, the customer uses Excel 2007, and for them there are some strange formatting issues, namely that the '£' sign (UK pound sign) is preceded with an accented 'A' character.

What encoding should I use? The annoying thing is that I can hardly test these fixes as I don't have access to Excel 2007!

like image 348
Chris Avatar asked Aug 22 '11 17:08

Chris


2 Answers

I'm using Windows ANSI codepage 1252 without any problems on Excel 2003. I explicitly changed to this because of the same issue you are seeing.

private const int WIN_1252_CP = 1252; // Windows ANSI codepage 1252

this._writer = new StreamWriter(fileName, false, Encoding.GetEncoding(WIN_1252_CP));
like image 130
Andy Avatar answered Sep 28 '22 07:09

Andy


I've successfully used UTF8 encoding when writing CSV files intended to work with Excel.

The only problem I had was making sure to use the overload of the StreamWriter constructor that takes an encoding as a parameter. The default encoding of StreamWriter says it is UTF8 but it's really UTF8-Without-A-Byte-Order-Mark and without a BOM Excel will mess up characters using multiple bytes.

like image 43
Andrew Kennan Avatar answered Sep 28 '22 06:09

Andrew Kennan