i think it has nothing to do with SQL, but rather the ACE drivers that are used to access via Excel;
the ACE driver does the peek at the first 100 rows, and does a best-guess datatype casting of the data base on that;
that's the registry setting you can tweak to make it peek at more rows.
so it sounds like your issues' have more to do with that.
if the actual raw data is CSV, then i would take the ACE /excel drivers out of the equasion and use a text driver , whether via SSIS bcp or bulk insert to get the data instead.
Lowell