Обычной загрузки файла должно быть достаточно ... не нужно ничего особенного для его интеграции.
Логика составления отчета должна быть в классе обслуживания, действие должно вызывать эту службу. Служба должна вернуть временный файл, чтобы действие могло отправить его клиенту в виде обычной загрузки файла.