2009-02-23 76 views

回答

3

改變你的ASP.Net頁面的contentType

Response.ContentType = "application/ms-excel" 
+0

還應該注意的是,有些人(GASP!)沒有excel,所以也許你應該把它轉儲成CSV並讓他們弄明白。 – hunter 2009-02-23 02:48:14

+0

也許還想確保您輸出Excel可以理解的原始表格。 – 2009-02-24 18:46:51

0

SQL Server報表服務將是從應用程序到Excel導出數據的最佳方式。

如果您沒有訪問/不想使用報告服務,取決於您想要提取的數據/格式可能使用CSV結構而不是Excel可能是最簡單的。

0

使用的Microsoft.Office.Interop.Excel DLL來創建Excel文件的數據,然後提供鏈接下載使用獵人戴利的下載方法的文件...

0

作爲一個通用的解決方案,您可能希望考慮編寫處理程序(ashx)進行導出 - 並傳遞查詢參數以重新創建查詢以生成數據或標識符以從緩存中獲取數據(如果已緩存)。根據CSV是否足以用於Excel導出,您可以格式化數據並將其發回,將ContentType設置爲@Hunter建議或使用主互操作程序集(這將需要服務器上的Excel)來構建真正的Excel電子表格,並將其序列化爲響應流。

0

我更喜歡使用OLEDB連接字符串。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Excel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"; 
0

不知道如何導出一個頁面,但如果你只是想導出數據集或數據表

 HttpContext.Current.Response.Clear() 
     HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fileName)) 
     HttpContext.Current.Response.ContentType = "application/ms-excel" 

     Dim sw As StringWriter = New StringWriter 
     Dim htw As HtmlTextWriter = New HtmlTextWriter(sw) 


     Dim table As Table = New Table 

     table.RenderControl(htw) 

     ' render the htmlwriter into the response 
     HttpContext.Current.Response.Write(sw.ToString) 
     HttpContext.Current.Response.End() 
3

我的一個最流行的博客是如何從.NET代碼的Excel文檔,使用Excel的XML標記(這不是OpenXML的,這是標準的Excel XML) - http://www.aaron-powell.com/linq-to-xml-to-excel

我也聯繫過一個更簡單的方法用VB做9

儘管這是.NET 3.5代碼,但它可以很容易地在.NET 2.0中使用XmlDocument完成並通過這種方式創建節點。

然後,只需要在響應中設置正確的響應標題和流回。

1

SpreadsheetGear for .NET將做到這一點。你可以用C#找到一堆活着的ASP.NET樣本,。

聲明:我自己的SpreadsheetGear LLC

0

我使用幾乎相同的確切代碼CodeKiwi。如果你有一個DataTable並且想將它流式傳輸到客戶端瀏覽器,我會使用它。

如果你想要一個文件,你也可以通過每一行/列做一個簡單的循環,創建一個CSV文件,我想提供一個鏈接到客戶端 - 你可以使用CSV或XLS的文件擴展名。或者,如果您將生成的文件流式傳輸到客戶端,則會提示他們是否打開或將其保存到磁盤。

interops(很好,我最後一次嘗試它們)很適合小數據集,但沒有很好地擴展 - 對於較大的數據集來說可怕的速度很慢。

1

如果您可以在GridView控件中顯示數據,它本身支持「右鍵單擊 - >導出到Excel」,而無需編寫任何代碼。