2012-12-07 57 views
0

我在ASP.NET C#中使用Respose.Write創建了一個excel文件,我的用戶可以將創建的文件保存在他們的系統上,但是我想將這個excel文件保存在我的服務器上,而沒有用戶知道任何事情。這怎麼可能?這是我如何創建我的Excel文件:保存在服務器上創建的excel文件

 Response.Clear(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment;filename=" + "res" + ".xls"); 
    Response.Charset = ""; 
    Response.ContentType = "application/vnd.ms-excel"; 

....

Response.Write("</table>"); 
    Response.Flush(); 
    Response.End(); 

這段代碼創建節省了Excel文件的客戶端PC,但我想保存在服務器上創建文件

+0

您應該閱讀C#中的基本文件系統輸入和輸出。你的問題表明,你甚至沒有試圖在問你之前自己解決這個問題。 – Maritim

+0

你如何生成你的Excel文件?它看起來像通過生成一個HTML表格,對吧? – dana

+0

是的,我生成它作爲一個HTML表格,我可以把它給我的客戶端下載,但知道我想保存在服務器 –

回答

2

總體思路是將Excel文件的內容寫入緩衝區。然後a)將其保存到文件中,並b)將其流式傳輸到客戶端。您將希望在服務器上使用唯一的文件命名約定(例如包括時間戳)。 IIS應用程序池還需要您將文件保存到的文件夾的寫入權限。

StringBuilder excel = new StringBuilder(); 
excel.Append("<table>"); 
... 
excel.Append("</table>"); 

// save to file 
File.WriteAllText("C:\\blah.xls", excel.ToString()); 

// output to response 
Response.Clear(); 
Response.Buffer = true; 
Response.AddHeader("content-disposition", "attachment;filename=" + "res" + ".xls"); 
Response.Charset = ""; 
Response.ContentType = "application/vnd.ms-excel"; 
Response.Write(excel.ToString()); 
Response.End(); 
+0

感謝達納,它比我預期的幫助! –

相關問題