Yo he tenido ese problema del excel lento para exportar un clientdataset de mas de 10,000 filas a excel y lo solucione con ADO.
Uso el clientdataset para las actualizaciones, pero para generar un listado en especifico de mas de 10,000 lineas uso TAdoDataSet, lo que hago es insertar en un modulo de datos un TAdoDataSet y le inserto los datos del clientdataset - lo cual por cierto a pesar la cantidad de filas este proceso es rápido - luego de eso Excel tiene un maravilloso método pero que solo trabaja con tecnologia ADO por eso es la necesidad de usar este componente. Creas un método con el nombre que desees y lo pones mas o menos asi:
Código Delphi
[-]
var o_Excel,o_Libro, o_Hoja : OleVariant;
..
..
o_Excel := CreateOleObject('Excel.Application');
o_Libro := o_Excel.Workbooks.Add;
o_Hoja := o_Libro.Worksheets.Add;
...
o_Hoja.Range['A2'].CopyFromRecordset(Rs.Recordset);
o_Excel.Visible := True;
Y listo este proceso es rapidísimo, espero te sirva como ami me sirvió.
Suerte.
Nota: otra solución sería que uses tecnología oledb y los componentes ado, pero en mi caso prefiero firebird y por eso sólo uso un componete TAdoDataSet para compatibilizar con Excel.