有什么方法可以找到在C#或VB.Net中检索Excel可执行文件路径的方法吗?我知道下面这两个选项,但不幸的是它们不合适。如果您有其他选择,请建议。
Process.Start("Excel")
并从Excel流程获取路径无法使用注册表选项,因为没有足够权限的人可能正在使用我的应用程序,因此我们想要远离。如果这个假设是错误的并且Registry对任何级别的用户访问权限都是可靠的,请告诉我。
使用第二个选项,我看到Excel进程正在打开,如果有可以启动的方式,但没有Excel进程对用户显示,这可能会有效。
答案 0 :(得分:1)
您可以隐藏它并将其关闭。您必须包含以下代码的互操作服务
Dim xl As Excel.Application = New Excel.Application
xl.Visible = False
Dim Excel_Path As String = xl.Path()
xl.Quit()
答案 1 :(得分:1)
我最终得到了这个逻辑,它符合我的目的。如果Excel是一个正在运行的进程,那么我将从那里获取路径,如果不是我通过创建实例来获取,该实例实际上并未显示Excel UI,而是在后台运行。
string path = string.Empty;
Process[] processlist = Process.GetProcesses();
foreach (Process theprocess in processlist)
{
if (theprocess.ProcessName == "EXCEL")
{
path = theprocess.MainModule.FileName;
break;
}
}
if (path == string.Empty)
{
Type officeType = Type.GetTypeFromProgID("Excel.Application");
dynamic xlApp = Activator.CreateInstance(officeType);
xlApp.Visible = false;
path = xlApp.Path + @"\Excel.exe";
xlApp.Quit();
}
答案 2 :(得分:0)