C# – 互操作excel

我想填写窗体的数据,以优秀。 代码的结尾,我给了validation,所以如果文件名存在于特定的位置,它不会再保存它

string savingNewForm = "C:\\temp\\" + temp; if (File.Exists(savingNewForm)) { MessageBox.Show("File already exist!"); oBook.Close(); oApp.Quit(); } else { oBook.SaveAs(savingNewForm); oBook.Close(); oApp.Quit(); MessageBox.Show("Your file saved"); } 

但是当用户保存相同的文件名时会出错。

我认为主要的问题是, if (File.Exists(savingNewForm))导致它不检查文件名是否存在,而是去else并给出一个popupExcel问,如果我想要replace或不。

什么是temp值? 如果文件名包含无效字符或者太长,可能会出现问题。

来自MSDN :

Exists方法不应该用于pathvalidation,这个方法只是检查path中指定的文件是否存在。 传递Exists的无效path返回false

如果path描述了一个目录,这个方法返回false

如果在尝试确定指定文件是否存在时发生任何错误,Exists方法将返回false

如果目录不存在,或者用户没有读取文件的权限(可能被locking),则File.Exists()将返回false。

如果这是文件存在的问题,请参阅Softerware的答案。 如果您希望Excel不要求用户覆盖,请尝试:

 oApp.DisplayAlerts = false; 

虽然我没有与你的Excel库工作,build议你尝试解决方法:

  • 保存到另一个文件;
  • 移除目标;
  • 将保存的文件移到目标文件名。

文件删除错误将更加翔实的任何情况。