在使用Interop的客户机上节省成本

我正在使用Interop Excel来自动化C#代码中的excel,但是在保存的时候,我希望它应该给用户一个popup窗口(就像我们从互联网上下载一个带有打开和保存选项的文件一样)

我已经尝试了以下,但它只保存在服务器的硬盘上

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

任何人都可以sugget什么可以做( 请参阅:我不想使用文件stream

您需要在将文件保存到服务器后启动文件下载

 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"); } 

编辑将文件保存在临时文件夹中。 注意,这不能保证文件的清理。

我不知道这是否会帮助你。 但是我曾经写过一个WebService,把我的xls作为一个bytearray返回,我的客户端应用程序将它parsing回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); } } ---------- 

在客户端应用程序看起来像这样:

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

您可能正在寻找一个保存/打开文件对话框,如下所示: http : //msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog%28v=VS.85%29.aspx他们会打开一个对话框,询问您保存文件的位置,一旦您select了位置,就会将该信息返回到您的程序,以便您可以将文件保存在那里。