2011-12-08 5 views
0

동적으로 생성 된 HTML 테이블을 Excel로 렌더링하는 간단한 ASPX 페이지가 있습니다. 작동하지만, screenshot에서 볼 수 있듯이 어떤 이유로 통합 문서를 열면 수식 입력 줄과 하단의 워크 시트 탭을 제외하고 GUI가없는 Excel 인스턴스가 생성됩니다. 쉽게 닫히거나 종료 할 수 없으며 내 워크 스테이션도 느려지는 것처럼 보입니다.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

엑셀은 단순히 전체 화면에없는이 방법을 시도? –

+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

Perfect! 고맙습니다. 나는 다르게 뭐 했어? Excel 스프레드 시트를 열 때 '열려고하는 파일 (myfile.xls)이 파일 확장자가 아닌 다른 형식으로되어 있습니다.'- 확장 기능은 무엇입니까? – 5arx