vi scrivo alcune righe da sostituire/aggiungere alle vostre:
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
Microsoft.Office.Interop.Excel.Application xl = null;
xl = new Application();
xl.Interactive = false;
xl.Visible = false;
Consiglio inoltre di chiudere e fare il Marshal.ReleaseComObject a scaletta, ovvero
rilascio lo sheet
chiudo il book
rilascio il book
chiudo excel
rilascio excel
Questo per cercare di correggere il vostro problema. Inoltre però bisognerebbe sapere il sistema operativo e la versione di IIS.
Se il problema persiste, allora è un errore di configurazione delle DCOM.
Per quanto riguarda invece la soluzione, io non utilizzerei le interop per fare un file di excel con una singola cella. Tante risorse sprecate.
basta creare una semplice tabella identica al risultato che volete vedere su excel, darla in pasto ad un gridview, e poi inserite il seguente codice:
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter =
new System.Web.UI.HtmlTextWriter(oStringWriter);
GridViewXLS.RenderControl(oHtmlTextWriter);
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition",
string.Format("attachment; filename={0}_{1}.xls; creation-date='{2}'",
ViewState["FileName"],
DateTime.Now.ToShortDateString().Replace("/", "-"),
DateTime.Now.ToString()));
Response.Charset = "utf-8";
Response.AppendHeader("pragma", "no-cache");
Response.Buffer = true;
Response.Expires = -1;
Response.Write(oStringWriter.ToString());
Response.Flush();
Response.End();