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 most common CSV import errors include: The file size is too large - The CSV import tool of the program you're using might have a file size requirement. To reduce the file size, you can delete unnecessary data values, columns, and rows.
Instead, this is due to the way Excel and other spreadsheet programs open a CSV file and display the data therein. Basically, spreadsheet programs are designed to be used for calculation purposes, so they tend to apply mathematical formats to numbers when the CSV file is opened directly into the program.
Because csv only contains data, not style. If you want to save style save as .
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.
The CSV starts with the two characters ID. If you surround the characters with double quotes it should work fine.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With