2011-11-03 50 views
1

我使用Interop Excel來自動化C#代碼中的excel,但在保存時我希望它能給用戶一個彈出窗口(就像我們在下載文件時一樣從開放式選項與和保存)在客戶機上保存excel使用Interop的機器

互聯網我試過以下,但只將其保存在服務器上的硬盤

xlWorksheet.Save(); 
xlWorksheet.SaveAs(parameters); 

任何人都可以sugget可以做些什麼(請參閱:我不t想要使用文件流

+0

這是一個網站或桌面應用程序? –

+0

它的網站,使用asp.net-mvc – 1Mayur

回答

1

您需要將文件保存在服務器

public FilePathResult GetFile() 
{ 
    string name = System.IO.Path.GetTempPath()+Guid.NewGuid().ToString()+".xls"; 
    // do the work 
    xlWorksheet.Save(name); 
    return File(name, "Application/x-msexcel"); 
} 

編輯保存在臨時文件夾中的文件後,啓動文件下載。請注意,這不能保證清理文件。

+0

它也將保存在服務器中,我猜。 是否有任何方法將它保存在服務器的臨時文件夾中,以便可以在維護會話中自動刪除它 – 1Mayur

+0

如果您不想處理臨時文件,則可以將該文件保存到內存流中,但是您說你不想使用流... –

+0

編輯將文件保存在臨時文件夾中 –

0

我不知道這是否會對您有所幫助。但我曾經寫道,返回我的xls爲ByteArray和我的客戶機App解析回一個XLS

public byte[] doSomething() { 
    try { 
     var xl = new ExcelWorksheet(); 
     //...blablabla... 
     xl.SaveAs(parameters...); 
     if (File.Exists(pathOfXlsDoc)) return File.ReadAllBytes(pathOfXlsDoc); 
     return null; 
    } finally { 
     if (File.Exists) File.Delete(pathOfXlsDoc); 
    } 
} 


---------- 

在客戶端應用程序,它看起來像這樣一個WebService:

private void BuildXls() { 
    try { 
     File.WriteAllBytes(clientsXlsPath, doSomething()); 
    } catch (Exception e) { 
     throw new Exception("Error!", e); 
    } 
} 
+0

在這也是它必須先在服務器的硬盤上創建。 如果服務器的臨時文件夾存在,它可能會被定期刪除作爲維護計劃的一部分 – 1Mayur

相關問題