With regards to, "<cfcontent file="filename" type="application/msexcel"> (as opposed to "application/vnd.ms-excel").", when I changed my type I match yours, there was no change in behaviour.
Regarding, "
Before changing the type of the cfcontent, it would say "The file you are opening 'filename.xls' is not the same type as the file extension."
After changing the type of the cfcontent, it now says "The file you are opening 'export.cfm' is not the same type as the file extension."",
That sounds like what we were seeing when we were using html table tags to generate our content. Things worked well until Office 2007 came out and then it got ugly. I suspect that when you say that your code is almost exactly the same as mine, you have a different definition of "almost" than do I.
I found the solution here. I don't know why it works, but it does.
I've tried it with the Excel, it works flawlessly; I'm about to apply it to the CSV in a moment. 
^_^