When Monarch reads in your Excel, it scans the first 250 rows or so to determine what the field types should be for each column.
You'll probably find that you'll have better results if you first sort the Excel file in Excel so that the numeric zip codes appear at the top.
Right now it's finding blanks so it prefers to go with the Character field type by default.
It wouldn't be the most elegant solution ever devised, but you could cheat a bit and fill the first rows in the Excel file with dummy data of the correct field type that you want Monarch to use.
Then filter out your dummy records. Fill one of the character fields with "DUMMY" or some such other unique text, then be sure to build a filter to exclude those records.
That should work.
V9 allows you to force a field to be character as part of a database import but it sounds like you are already getting that but with null entries, which is odd since I would normally expect a null to be a character value in a numeric field.
You can also set NULL, when it occurs, to be presented as something else.
Kruncher's solution is a god catch all for a first read of a database when you are not applying an existing model. Also can be used to ensure you obtain the field sizes you will need to cover any possible data input when using delimited files.