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

时间:2015-08-10 09:07:35

标签: .net excel visual-c++ c++-cli office-interop

我是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文件?

2 个答案:

答案 0 :(得分:1)

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

解决方案是将您的相对路径转换为绝对路径。使用此answer获取应用程序目录,并将“Test.xlsx”添加到该路径。

答案 1 :(得分:0)

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