2015-03-13 62 views
0

我有一個程序,可以將db內容寫入excel電子表格。該功能包含在名爲「Search_aspx」的頁面中。從vb.net將表格內容寫入xls

Response.ClearContent() 
Response.Charset = "" 
Response.ContentType = "application/vnd.ms-excel" 
Response.AddHeader("Content-Disposition", "attachment; filename=FileName.xls") 
Response.Cache.SetCacheability(HttpCacheability.Private) 
Dim dg As New DataGrid 
dg.DataSource = dtResults 
dg.DataBind() 
Dim sw As New System.IO.StringWriter() 
Dim htw As New HtmlTextWriter(sw) 
dg.RenderControl(htw) 
Response.Write(sw.ToString) 
Response.Flush() 
Response.Close() 

這工作得很好永遠,但上週我遷移的解決方案,新的服務器(Server03到Server08),現在是行不通的。當我嘗試保存時,它會詢問我是否要「保存search_aspx」而不是「保存FileName.xls」。

這裏有什麼問題?

編輯:

所有右傾......我把貼在下面的意見,隨後梅森的建議,而該網頁還問我是否要保存「Search_aspx」。現在已經安裝了EPPlus在我的解決方案,正確引用等....

Response.ClearContent() 
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 
Response.AddHeader("Content-Disposition", "attachment; filename=FileName.xlsx") 
Dim package As New ExcelPackage() 
Dim sheet = package.Workbook.Worksheets.Add("Data") 
sheet.Cells.LoadFromDataTable(dtResults, False) 
Response.BinaryWrite(package.GetAsByteArray()) 
Response.Flush() 
Response.Close() 

回答

1

真正的問題是你是不是創建一個XLS文件。您正在創建一個擴展名爲.xls的HTML文件。我討論了爲什麼這是一個壞主意的幾個原因,並詳細說明你可以做什麼on my blog

短期和甜蜜的版本是,有沒有什麼好辦法的做法產生.xls文件在ASP.NET環境,您應該生成.xlsx文件有像樣的圖書館(在我的博客中討論),或者切換到另一個數據格式如CSV。

+0

完全理解......但是,根據我們的要求,我需要一個創建xls的'快速和骯髒'的方法。我明白,這不是一個'真正的'xls,但用戶只需要這種格式的東西。當使用propre庫時,這個過程相對來說太長了。 – mrwienerdog 2015-03-13 16:07:23

+0

@mrwienerdog用戶不能使用.xlsx文件嗎? Office 2003以後的每個版本的Office和Office XP都支持它。不,這個過程不是「太長」。正如我的博客所示,這很容易。 – mason 2015-03-13 16:08:55

+0

謝謝,先生...我接受了您的建議,並安裝了EPPlus。在上面做了一個編輯,但是TL; DR:它仍然是錯誤的。 – mrwienerdog 2015-03-13 18:15:24