I am writing out a comma separated file using a console app, and than using Process to open the file. It's a quick and dirty way of dumping results of a query into excel.
for a while this worked fine, but lately i started getting "The file you are trying to open 'blah.csv', is in a different format than specified by the file extension".
and than after clicking "Yes"
Excel has detected that blah.csv is a SYLK file, but cannot load it. Either the file has errors or it is not a SYLK file format. Click OK to try to open the file in a different format.
Pressing OK opens it, and displays correctly.
I see some solutions for this in web world with adding content-disposition header, but since i am using a Process to open it, i can't apply that fix.
my code to open the file:
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = filePath;
info.UseShellExecute = true;
Process.Start(info);
if i open the file in Notepad++ and show all chars, it just shows as regular CSV with CR LF line endings.
after some investigation, it looks like the headings line is triggering the error. If i simply write a empty line before the headings, the error goes away. the headings look like this:
heading1,heading2,heading3 CRLF
Have a look here: http://support.microsoft.com/kb/323626
it seems having ID as the first two chars on the header row is the issue - pretty bizarre behaviour from Excel in my opinion.