The Excel Export module has the base functionality you need. I would recommend you pre-build an export template with all of the fields you might want on the report. Look at the Domain Model of the Excel Export module to understand how that is stored.
Then, your UI will let the user pick which columns to export and choose sorting. That could be done however you like. Once the user moves on from that page, your microflow should do the following: