我正在通过以下方式阅读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”
答案 0 :(得分:2)
使用以下代码获取.exe位置:
string localPath = System.IO.Path.GetDirectoryName
(System.Reflection.Assembly.GetExecutingAssembly().Location)
答案 1 :(得分:1)
如果有任何疑问,您可以使用Directory.GetCurrentDirectory()了解当前目录。
如果Excel没有找到该文件,那么您很可能误解了当前目录是什么。构造相对于GetCurrentDirectory()返回的目录的路径。
仅供参考,在调试器中运行应用程序,在MS测试单元测试中,所有设置不同的当前目录。原因是可执行文件在每种情况下都从不同的目录启动。
答案 2 :(得分:0)
确保excel文件与可执行文件位于同一文件夹中,或者相对于包含可执行文件的目录,确保相对路径正确。
如果项目中包含excel文件,您还可以在解决方案资源管理器中右键单击它,单击属性,然后将“复制到输出目录”设置为“始终复制”。这将导致文件放在项目输出目录中。然后,相对路径将仅包含文件的名称。