Hola.
Mira hace poco tuve ese mismo problema o necesidad, pero en mi caso yo utilizo tablas HTML no datagrid, pero por mala suerte para mi buena para ti encontre como pasar los datos de un datagrid a Excel.
Lo malo que no lo tengo a la mano, no mentira.
dim fileName as string = "archivo.xls"
Response.Clear()
Response.Buffer= true
Response.ContentType = "application/download"
Response.Charset = ""
Response.AddHeader("Content-Disposition","attachment;filename=" + fileName)
me.EnableViewState = false
dim sWriter as new System.IO.StringWriter()
dim htmlWriter as new System.Web.UI.HtmlTextWriter(sWriter)
ListadoTabla.RenderControl(htmlWriter)
Response.Write(sWriter.ToString())
Response.End()
Obvio que ListadoTabla es el Datagrid.
Salu2
Marco Diaz.