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
The CSV starts with the two characters ID. If you surround the characters with double quotes it should work fine.
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.
(EDITED) I had a similar issue - I was getting the exact same error, but in my case this had suddenly occurred after months of frequent use. I wondered if the problem really is the "ID" column title, Microsofts solution doesn't explain why, as the OP stated, "for a while this worked fine" and then became a problem.
I found in my scenario there was some erroneous data coming from an upstream system where a comma had been added in someone's first name, and this was invalidating the .csv file. This caused the 'file is in wrong format error' but sent me down the wrong path with the ' [filename] is a SYLK file, but cannot load it'
hope this might help someone else one day.
SYLK file format is not valid error occurs when the CSV file has first two characters are in the uppercase I and D. It can be resolved by the following steps: Open the file in Notepad and hit apostrophe (’) key before the 1st character. Save the file and reopen MS Excel.