Ti riporto comunque un esempio ---in VB.Net--- fatto tempo fa (si appoggia ad una GridView che si chiama dgTurniDipendente) :

codice:
    Protected Sub btEsportaExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btEsportaExcel.Click
        dgTurniDipendente.AllowPaging = "False"
        dgTurniDipendente.DataBind()

        Dim tw As New System.IO.StringWriter()
        Dim hw As New System.Web.UI.HtmlTextWriter(tw)
        Dim frm As HtmlForm = New HtmlForm()

        Response.ContentType = "application/vnd.ms-excel"

        Response.AddHeader("content-disposition", "attachment;filename=export.xls")
        Response.Charset = ""
        EnableViewState = False

        Controls.Add(frm)
        frm.Controls.Add(dgTurniDipendente)
        frm.RenderControl(hw)

        Response.Write(tw.ToString())
        Response.End()
    End Sub