2010-09-15 178 views
0

我想知道什麼真的會發生在幕後當我寫MIME類型這樣application/vnd.ms-excelMIME類型,並出口到

我的意思是我將文件導出不同的應用程序(的Excel,Word,PDF ...等等等等)以這樣的excel:

gridView.Page.Response.Clear(); 

     gridView.Page.Response.Buffer = true; 



     gridView.Page.Response.AddHeader("content-disposition", 

     "attachment;filename=GridViewExport.xls"); 

     gridView.Page.Response.Charset = ""; 

     gridView.Page.Response.ContentType = "application/vnd.ms-excel"; 




     StringWriter sw = new StringWriter(); 

     HtmlTextWriter hw = new HtmlTextWriter(sw); 



     gridView.AllowPaging = false; 
     gridView.AllowSorting = false; 
     gridView.DataBind(); 
     gridView.RenderControl(hw); 




     //style to format numbers to string 

     string style = @"<style> .textmode { mso-number-format:\@; } </style>"; 

     gridView.Page.Response.Write(style); 

     gridView.Page.Response.Output.Write(sw.ToString()); 

     gridView.Page.Response.Flush(); 

     gridView.Page.Response.End(); 

我知道excel文件有特定的format.so我想知道它是如何做到背後的場景? 我想到的只是生成HTML並將其粘貼到EXCEL中,而不是真正導出爲EXCEL格式?

任何人都可以糾正我,如果我錯了?或者告訴我幕後發生了什麼?

回答

1

什麼神奇的事情發生 - 你確實只是生成HTML; MIME類型僅僅表示哪個應用程序應該處理數據。操作系統和瀏覽器一起工作,所以當瀏覽器看到具有該MIME類型的響應時,它會爲您打開Excel。

如果不是跟隨任何可能產生這個請求的鏈接,你做了一個右鍵點擊另存爲,你最終會在文件中結束HTML。這不像ASP.NET在後臺將它翻譯成Excel本地格式。

只是在一般性說明中,如果您有興趣瞭解像這樣發生的事情,您可能需要運行Fiddler(診斷代理)或Wireshark(網絡嗅探器) - 兩者都會讓您查看哪些數據正在瀏覽器和服務器之間進行交換。