在使用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了位置,就会将该信息返回到您的程序,以便您可以将文件保存在那里。