Please post a packaged workbook and Excel source file as this will make it easier for forum posters to look at your problem
I too have come across this and it appears to be related to the way the data is extracted from Excel or Access.
When the data is being pulled in the routine seems to look at the first few rows of data to determine the field type for the data. So is the first few rows of a field contain numbers then it is imported as a numeric field. One way to "solve" this is to ensure that, in the first few rows, the data for that field is alphabetic or alphanumeric.
You could change those columns to be text fields instead of general. Then Tableau will read each cell as a text field.