Una duda:
-Dicho método envía el .xls al cliente. ¿Hay algún modo tan sencillo como ese que lo que haga sea, además de eso, guardar el archivo en el servidor?
Y una respuesta a una duda que muchos pueden haberse planteado: las celdas del excel aparecen sin líneas. ¿Cómo "devolvérselas"? Muy fácil,

poniendo en la etiqueta table border=1 (o el que se quiera)

. Así al menos se pondrán líneas para las celdas con campos, aunque el resto seguirán sin líneas (incluso mejor así).