Show the code you use to read the data.
If you are using Excel data that has multiple header rows then the text in the second or third or whatever head tells SAS the column has mixed data. Since SAS only has numeric and character types it goes with character to preserve the data.
If this sounds likely then edit the file to a single row of headers.
Make sure that your "numeric" columns do not have any values like "null" "NA" "missing" or similar text in the column as that will also cause this issue. And unfortunately because Excel allows anything in any cell what looks like a number may actually be text.
You may have better luck saving the file as CSV from Excel and read that. If you are using Proc Import to read the data you can specify more options with a text file such as DATAROW statement to specify which row of the file has the first actual row of data.