Skoro chcesz mieć XLSX, to musisz go wygenerować w formacie XLSX, a nie w tekstowym - to chyba oczywiste.
Jeśli masz to zrobić jednorazowo czy rzadko - ale manualnie - to możesz wynik zwrócić w postaci recordsetu (wykorzystując pipeline function) i w SQL Developer wynik zapisać jako XLSX.
Jeśli wystarczy sama zawartość, to możesz wygenerować wiersze wyniku jako CSV i zapisać to za pomocą pakietu UTL_FILE do pliku na serwerze bazy.
Taki plik możesz otworzyć w Excelu. Jeśli jednak potrzebujesz mieć faktycznie format XLSX (i może jeszcze jakieś formatowanie w nim), to łatwiej to będzie zrobić w jakimś zewnętrznym narzędziu, przekazując mu CSV jako wejście. Ewentualnie wykorzystać Javę w bazie danych do tego celu.
Znalazłem coś jeszcze co może rozwiązać twój problem:
https://renenyffenegger.ch/Oracle/Libraries/xlsx-writer.html
i źródła: https://github.com/ReneNyffenegger/xlsx_writer-Oracle