使用互操作在客户端机器中保存excel

本文关键字:保存 excel 机器 客户端 互操作 | 更新日期: 2023-09-27 18:13:07

我使用Interop Excel在我的c#代码中自动Excel,但在保存它的时候,我希望它应该给用户一个弹出窗口(就像我们从互联网下载文件时得到的打开和保存选项)

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

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

任何人都可以建议可以做什么(请参阅:我不想使用fileststream )

使用互操作在客户端机器中保存excel

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

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作为一个字节数组,我的客户端应用程序解析回一个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);
   }
}

----------

在客户端App中是这样的:

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它会打开一个对话框,询问你在哪里保存文件,一旦你选择了位置,它就会返回信息给你的程序,这样你就可以在那里保存文件了。