Acho que a melhor opção é vc fazer a exportação na mão.
Pra gerar o XLS, vc pode usar essa função onde $arquivo = nome do arquivo (planilha.xls) e $html será o conteúdo montado pra jogar para o xls. Faça em uma tabela
function geraXls($arquivo, $html){
// Configurações header para forçar o download
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D,d M YH : i : s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/x-msexcel");
header ("Content-Disposition: attachment; filename=\"$arquivo\"" );
header ("Content-Description: PHP Generated Data" );
// Envia o conteúdo do arquivo
}
Para montar o xls, vc faz o select executado na sua consulta e o que é executado na subconsulta e monta da forma que vc preferir. Monte isso em html.
Espero que ajude vc.