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议你尝试解决方法:
- 保存到另一个文件;
- 移除目标;
- 将保存的文件移到目标文件名。
文件删除错误将更加翔实的任何情况。