Excel has two different, unrelated notions when it comes to data in cells: raw/stored value, and display value.
The "raw" or stored value is the actual data in an unformatted representation. The type of the raw data can be number, text, date, etc.
The "display" value is how the data is formatted. When using the Excel GUI, you see the display value, not the raw value.
The problem is, when you export to CSV, it is taking the raw value and exporting it, not the display value! So, even if you format the data to contain leading zeroes using the Format Cells dialog, if the underlying value doesn't contain a leading zero, then your export won't either.
You need to format all the data as text (in the Excel spreadsheet), and then add a leading zero when appropriate. This will eliminate the display value faking you out into thinking that you have a leading zero in the raw value (you don't).
The zero doesn't exist as part of the cell contents, just the formatting, so when you format as text you don't get it. You could try using a formula in the next column, e.g. if you have 5 digit (?) zip codes with entries in A2 down put this formula in B2
copy the formula down the column
The result of that is a text value (possibly with actual leading zero). Once you have this value in another column, you can copy and do "Paste Values" over the original column to replace all the underlying data with the zero-padded data. Then delete the extra column.