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

C++/CLI How to open Excel file using relative path?

我对 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

有什么方法可以使用相对路径打开 Excel 文件吗?

可能当前目录没有按照您的预期设置。当前目录可以更改,而无需您在代码中明确更改它,因此您不应该真正依赖它是您所期望的。

解决办法是把你的相对路径变成绝对路径。使用此 answer 获取应用程序的目录,并将 "Test.xlsx" 添加到该路径。

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