Я должен определить местоположение установки excel в реестре и открыть файл excel. Я нашел пример кода. У меня есть две проблемы, во-первых нет InstallRoot directorty в данном пути реестра в этом кодеconfusion excel установить место в реестре
RegistryKey RootDir = excelKey.OpenSubKey (CurrentVersion + @ "0 \ Excel \ InstallRoot.");
Но он существует в рамках этого пути (SOFTWARE \ Wow6432Node \ Microsoft \ Office) Другая проблема, которую я получал сообщение, которое говорит, что «не может открыть в Excel , потому что первенствует не установлен.» Таким образом, Я думал, что CurrentVersion возвращает значение worng в моем случае (с 2007 офиса) возвращает 120,0 вместо 12,0
public void OpenInExcel(string filename)
{
string dir = "";
RegistryKey key = Registry.LocalMachine;
RegistryKey excelKey = key.OpenSubKey(@"SOFTWARE\MicroSoft\Office");
if (excelKey != null)
{
foreach (string valuename in excelKey.GetSubKeyNames())
{
int version = 9;
double currentVersion=0;
if (Double.TryParse(valuename, out currentVersion) && currentVersion >= version)
{
RegistryKey rootdir = excelKey.OpenSubKey(currentVersion + @".0\Excel\InstallRoot");
if (rootdir != null)
{
dir = rootdir.GetValue(rootdir.GetValueNames()[0]).ToString();
break;
}
}
}
}
if (dir != "")
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = dir + @"Excel.exe";
startInfo.Arguments = "\"" + fileName + "\"";
startInfo.UseShellExecute = false;
using (Process process = new Process())
{
process.StartInfo = startInfo;
try
{
process.Start();
}
catch (Exception ex)
{
Console.WriteLine("\n\nCould not start Excel process.");
Console.WriteLine(ex);
}
}
}
else
{
MessageBox.Show("Can't Open in excel because excel is not installed.");
}
}
@Edit: Я думаю, что что-то пойдет не так в этой строке, которая возвращает неверное значение, потому что это работает таким образом
RegistryKey rootdir = excelKey.OpenSubKey ( @ "12.0 \ Excel \ InstallRoot");
Я не знаю, почему TryParse возвращает 120,0
Есть ли конкретная причина, почему вы не хотите, чтобы установить 'startInfo.UseShellExecute = true', 'startInfo.FileName = @" document.xls "и позволяет ОС делать все остальное? – GSerg
Вы отметили ответ RenniePet. 'Это не предназначено для ответа на ваш вопрос' – Kiquenet