Constantemente precisamos exportar um grid ou um DataSet para excel segue abaixo duas funçoes que podem resolver o problema de vocês:

 public void ExportarParaExcel(Page pagina, DataSet ds, String filename)
        {

            DataGrid dg = new DataGrid();
            dg.AutoGenerateColumns = true;
            dg.DataSource = ds.Tables[0];
            dg.DataBind();
            pagina.Response.Clear();
            pagina.Response.ContentType = "application/vnd.ms-excel";
            pagina.Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".xls");
            dg.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            dg.RenderControl(hw);
            pagina.Response.End();
        }

Ou para um CSV:

        public void ExportarParaExcelCSV(Page pagina ,DataSet ds, String filename)
        {
            pagina.Response.Clear();
            pagina.Response.Buffer = true;
            //Response.Charset = "UTF-8";
            pagina.Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename + ".csv");
            pagina.Response.ContentEncoding = System.Text.Encoding.Default;
            pagina.Response.ContentType = "application/ms-excel";

            StringWriter stw = new StringWriter();

            HtmlTextWriter htextw = new HtmlTextWriter(stw);

            //Montar colunas
            string tab = "";
            DataTable dt = ds.Tables[0];
            foreach (DataColumn dc in dt.Columns)
            {
                pagina.Response.Write(tab + dc.ColumnName);
                tab = ";";
            }
            pagina.Response.Write("\r\n");

            //Montar linhas
            int i;
            foreach (DataRow dr in dt.Rows)
            {
                tab = "";
                for (i = 0; i < dt.Columns.Count; i++)
                {
                    pagina.Response.Write(tab + dr[i].ToString());
                    tab = ";";
                }
                pagina.Response.Write("\r\n");
            }
            pagina.Response.End();
        }
Até a próxima