To be precise: I checked it with int (I) vs numeric N(n,d) and integer fields can't be blank.
How "VFP remembers" blank fields differs from what I thought, but that doesn't matter in detail. It's just VFP stores N(n,d) fields as actual strings in the DBF, so 0.00 (in an N(4,2) field, for example), can be differentiated from blank by storing "0.00" for the 0 and, well, " " (the blank string of 4 spaces) for not populated fields in the DBF.
Well, you could export this to excel as strings. The cell data types then would be strings. Not sure whether different Excel versions will autoconvert a string that represents a number to a numeric cell and keep spaces as blank cell in the spreadsheet. Could well work, as I know if you want to keep things as strings in Excel you better set a cell value to a single quotebefore the actual value (no closing quote), which tells Excel to not infer a data type.
It's not working to change a num field with blank fields with ALTER TABLE to char fields, that introduces 0.00 for the blank fields. If you copy To TYPE CSV? You guessed it, it becomes 0.00 again. Export as SDF? 0.00 again. Select Isblank(field) from table - actually resulted .f. for all rows/fields, so that also doesn't help.
So I guess scanning the dbf and determining ISBLANK() per row will be your only helper tool. After exporting you'd need to go into the result shield and blank those cells that correspond to isblank() VFP table fields.
Well, all that said NULL surely is the simpler solution to the problem, conditional formatting or a search&replace can blank nulls in the Excel sheet, too.
Chriss