In relation to my previous question Return the SQL Statement of an Explicit Cursor,
i was able to generate an Excel (.xls) file using DBMS_SQL and
If you need to produce XLSX file and send it to business users it sounds rather like a job for some services outside DB. You should prepare procedure that returns ref cursor with conten of report and then setup some service that consume data generate PDF or XLSX and send it.
If you can't do it outside DB you can still use Java inside Oracle. You can create Java procedure that will create XLSX. Here is an example of Java creating Excel file. But creating complicated Java procedure is not the best solution and probably will need you to install some jars on DB server so I would create procedure that returns ref cursor with data and small program that creates file and send it outside DB.