I have some sample data (probably from a database, originally), transmitted to me in Excel. Every field in the spread sheet has Excel type “text”.
Import converts everything to type String in Mathematica.
Applying ToExpression to the values with Head String does the right thing - converting to Head Integer, Real, or String - EXCEPT for one case.
SemanticImport might be able to do this all for you instead of Import. It works okay for simple files, but might need some guidance on the kind of output you’re expecting it.