2011-12-08 155 views
0

我有一個簡單的ASPX頁面,將動態生成的HTML表格呈現給Excel。它可以正常工作,但是從screenshot可以看出,出於某種原因,打開工作簿會導致Excel實例沒有GUI,除了公式欄和底部的工作表選項卡之外。它不能很容易地關閉或退出,似乎也減慢了我的工作站速度。GUI在哪裏去了?

我正在使用此代碼來構建和導出表。

 runReport2();//Builds the table - this bit is fine. 

     Response.Clear(); 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = "application/vnd.ms-excel"; 
     Response.AddHeader("content-disposition", "attachment;filemename=" + "FleetReport.xls"); 

     System.IO.StringWriter sw = new System.IO.StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 

     this.tblReport.RenderControl(hw); 
     System.Text.StringBuilder sb1 = new System.Text.StringBuilder(); 

     sb1.Append(sw.ToString()); 
     sw = null; 
     hw = null; 
     Response.Write(sb1.ToString()); 
     sb1.Remove(0, sb1.Length); 
     Response.Flush(); 
     Response.End(); 

你能提出我可能會做錯什麼嗎?我是以一種明智的方式做到這一點,還是應該將CSV發送到Excel?

+0

不是簡單的Excel在全屏? –

+0

不用它的窗口。我可以通過拖動邊/角來調整這個最小窗口的大小,但無法找到GUI的其餘部分。 – 5arx

+0

如果您將Excel文件單獨下載到您的文件系統,然後從文件系統打開,問題是否會發生?換句話說,excel文件本身不是問題的根源,而不是你的代碼? –

回答

1

嘗試這種方式

 HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; Filename = FleetReport.xls")); 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     HttpContext.Current.Response.ContentType = "application/ms-excel"; 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 
     this.tblReport.RenderControl(hw); 
     Response.Write(sw.ToString()); 
     Response.End(); 
+0

完美!非常感謝你。我在做什麼不同......? 只是一件事 - 當我打開電子表格時,Excel表示'您要打開的文件(myfile.xls)與文件擴展名指定的格式不同「 - 擴展名應該是什麼? – 5arx