我使用Interop Excel來自動化C#代碼中的excel,但在保存時我希望它能給用戶一個彈出窗口(就像我們在下載文件時一樣從開放式選項與和保存)在客戶機上保存excel使用Interop的機器
互聯網我試過以下,但只將其保存在服務器上的硬盤
xlWorksheet.Save();
xlWorksheet.SaveAs(parameters);
任何人都可以sugget可以做些什麼(請參閱:我不t想要使用文件流)
我使用Interop Excel來自動化C#代碼中的excel,但在保存時我希望它能給用戶一個彈出窗口(就像我們在下載文件時一樣從開放式選項與和保存)在客戶機上保存excel使用Interop的機器
互聯網我試過以下,但只將其保存在服務器上的硬盤
xlWorksheet.Save();
xlWorksheet.SaveAs(parameters);
任何人都可以sugget可以做些什麼(請參閱:我不t想要使用文件流)
您需要將文件保存在服務器
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");
}
編輯保存在臨時文件夾中的文件後,啓動文件下載。請注意,這不能保證清理文件。
它也將保存在服務器中,我猜。 是否有任何方法將它保存在服務器的臨時文件夾中,以便可以在維護會話中自動刪除它 – 1Mayur
如果您不想處理臨時文件,則可以將該文件保存到內存流中,但是您說你不想使用流... –
編輯將文件保存在臨時文件夾中 –
我不知道這是否會對您有所幫助。但我曾經寫道,返回我的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);
}
}
在這也是它必須先在服務器的硬盤上創建。 如果服務器的臨時文件夾存在,它可能會被定期刪除作爲維護計劃的一部分 – 1Mayur
你可能看對於這樣的保存/打開文件對話框: http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog%28v=VS.85%29.aspx 他們打開一個對話框詢問您保存文件的位置,一旦您選擇位置將該信息返回到您的程序,以便您可以將文件保存到那裏。
其網站不是WinForm應用程序 – 1Mayur
這是一個網站或桌面應用程序? –
它的網站,使用asp.net-mvc – 1Mayur