What does Sugar use to determine the order of columns in the list view export?

I have overridden the create_export_query function for both a custom module and an out of the box module (Contacts). 

For the custom module it works fine in that it orders the columns in the CSV based on the order my SQL query returns the fields however the Contacts module appears to have a set order which I can't change. It seems irrelevant which order I query the fields in.

How does Sugar determine the order of fields in the spreadsheet? I have looked around but can't see any clues as to where this order is?