C ++ / CLI如何使用相对path打开Excel文件?

我对C ++ / CLI相当陌生,而且在打开Excel文件时遇到了麻烦。 这是我的下面的代码示例。

#using <system.dll> using namespace System; using namespace Microsoft::Office::Interop::Excel; String ^filename = gcnew String(L"Test.xlsx"); try { Application^ exapp = gcnew ApplicationClass(); Workbook^ wb = exapp->Workbooks->Open(filename, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing); Worksheet^ exws = safe_cast<Worksheet^>(exapp->ActiveSheet); exws->Cells[1, 1] = "Hello world"; return true; Console::WriteLine("File Read Successfully"); } catch (Exception ^e) { Console::WriteLine("Failed to read File"); Console::WriteLine(e); return false; }; 

每当我运行它,它总是会抛出FileNotFoundException ,即使Excel文件正好在Test.exe旁边,除非我将文件名改回到C:\Users\NGU0085\Documents\Visual Studio 2013\Projects\Test\Debug\Test.xlsx

有没有办法使用相对path打开Excel文件?

也许当前目录没有设置为你所期望的。 当前目录可以改变,而不用在代码中明确地改变它,所以你不应该真正依靠它。

解决办法是把你的相对path变成绝对path。 使用此答案获取应用程序的目录,并将“Test.xlsx”添加到该path。

你可以使用这个函数System.Reflection.Assembly.GetExecutingAssembly()。位置