The reason is quite clear - the row isn't empty - at least not from the point of view from the Excel libraries which parse the data.
For example, any data with white font on white background (sounds maybe silly but I think it's not so seldom) or anywhere (an unintended) space but more likely is any kind of invisible formatting and probably also an inclusion of this area within any expressions or names or similar stuff - anything which includes these area.
Further I'm wouldn't be surprised if such things aren't consistent between multiple releases and/or saving-states. OOXML allows respectively accepted various ways to save data within the xlsx. This means the tool and/or the libraries and their releases which create the file could have an impact.
As long as you have always the same kind of file you could it completely ignore and just using the appropriate header-lines to fetch the labels. If these rows may changeable it will be more difficult. Either you change the source appropriately or you need any kind of pre-load to count recno() / rowno() or similar to get the healer-lines information and/or loading the data without the labels and filtering and renaming the data/fields afterwards.