If you are using Proc Import to read XLS or XLSX files then it is a good idea to insure that column headings are on row 1 and only row 1, data starts in row2 and is not blank. A number of blank values for column might result in assigning the value as character.
One option is to save the file as CSV and import that. One advantage is that you can use the guessingrows parameter to use more than the default 20 rows of data to determine data type when guessing and "blank" data will be missing so not influencing the choice of numeric or character. The next thing is the procedure generated datastep code that appears in the log that you can examine to see the choices made. if you disagree with the code you can copy and paste it into the editor and change informats, formats and such.
... View more