2011-12-08 227 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