Search code examples
c#excelfile-ioexport-to-excel

generating/opening CSV from console - file is in wrong format error


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


Solution

  • 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.