eric256, thanks for this post. I'm having to do the same thing & I'm looking at differences between your program, using Spreadsheet::WriteExcel, and mine using Win32::OLE.
So far, mine works, but could be "cooler". Yes, MS Excel will read a CVS file, but like you, my users want it "created for them", then they'll tweak it. Thanks again, it really helps with the learning curve.