使用MS Visual Studio 2010在C#中读取Excel文件:如何给相对path?

我正在以下面的方式阅读Excel文件:

string path = @"C:\Users\myUserName\inputfile.xlsx"; Excel.Application app = new Application(); Excel.Workbook workbook = app.Workbooks.Open(path, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 

我想知道是否有任何方法可以给相对path,而不是硬编码的绝对path。 我所想的是将inputfile.xlsx放在同一个目录中,并执行类似…

 string path = @"inputfile.xlsx"; 

但是,它给“COMException未处理..”,“inputfile.xlsx找不到”

使用下面的代码来获取.exe位置:

 string localPath = System.IO.Path.GetDirectoryName ‫‪(System.Reflection.Assembly.GetExecutingAssembly().Location‬‬) 

如果有任何疑问,可以使用Directory.GetCurrentDirectory()来了解当前目录是什么。

如果Excel没有find该文件,那么您很可能误解了当前目录。 构造相对于由GetCurrentDirectory()返回的目录的path。

仅供参考,在debugging器中运行应用程序,在MS Testunit testing中将全部设置不同的当前目录。 原因是可执行文件在每种情况下都是从不同的目录启动的。

确保excel文件与可执行文件在同一文件夹中,或者确保相对path相对于包含可执行文件的目录是正确的。

如果excel文件包含在您的项目中,您也可以在解决scheme资源pipe理器中右键单击它,单击属性,并将“复制到输出目录”设置为“复制总是”。 这将导致文件被放置在项目输出目录中。 相对path将只包含文件的名称。