0

我正在通过以下方式读取 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);

我想知道是否有任何方法可以提供相对路径而不是硬编码的绝对路径。我的想法是将 inputfile.xlsx 放在同一目录中并执行类似...

string path = @"inputfile.xlsx";  

但是,它给出了“COMException unhandled..”,“inputfile.xlsx not found”

4

3 回答 3

2

使用以下代码获取 .exe 位置:</p>

string localPath = System.IO.Path.GetDirectoryName
‫‪(System.Reflection.Assembly.GetExecutingAssembly().Location‬‬)
于 2012-08-20T16:06:27.887 回答
1

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

如果 Excel 没有找到该文件,那么您很可能误解了当前目录是什么。构造相对于 GetCurrentDirectory() 返回的目录的路径。

仅供参考,独立运行应用程序、在调试器中和在 MS Test 单元测试中都将设置不同的当前目录。原因是可执行文件在每种情况下都是从不同的目录启动的。

于 2012-08-20T16:06:06.417 回答
0

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

如果您的项目中包含 excel 文件,您也可以在解决方案资源管理器中右键单击它,单击属性,然后将“复制到输出目录”设置为“始终复制”。这将导致文件被放置在项目输出目录中。相对路径将只包含文件名。

于 2012-08-20T16:03:54.283 回答