Можно вытащить данные а потом запихнуть их в xls без всяких промежуточных csv. Смотрите в сторону питоновского модуля xlwt.
А если без питона - то я для подобных вещей использую libreoffice под линуксом. Очень удобно, пишем/рисуем в мастере запрос к БД и потом просто драг-н-дроп в экселевский файл.