Excel is not that smart, so it makes guesses.
If the 1st few records in a field can be determined as numbers it will convert to numbers even tho the rest is actuall string.
To ensure data integrity, i run a macro to put the string char (single quote) on every record in those colulmns that MUST be string.
Then it ALWAYS imports corretly
Code:
Sub Cvt2Txt()
range("A2").select
While ActiveCell.Value <> ""
vTxt = ActiveCell.Value
If Left(vTxt, 1) <> "'" Then ActiveCell.Value = "'" & vTxt
ActiveCell.Offset(1, 0).Select 'next row
Wend
End Sub