[英]Check installed Excel version and launch it
我正在我的應用程序中嘗試使用特定參數(即其他xla和xll)啟動Microsoft Excel。
現在,它可以正常工作,因為我所有的用戶都只安裝了Office11(= 2003)。
我的公司將切換到Windows 7和Office 2010,並且由於.exe不在C:\\Program Files:\\Microsoft Office\\Office11\\EXCEL.EXE
從邏輯上講我無法啟動任何Excel。
我在注冊表中進行了快速檢查,以確保可以肯定地檢查當前安裝的版本。 也有很多文章說明如何獲取當前安裝的Office版本。
但是,我想知道是否可以找到任何直接給我.exe路徑的東西(例如良好的注冊表項)來啟動Excel。
使用當前的計算機(Win XP x86,Office11),可以在HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Office\\11.0\\Excel\\InstallRoot
找到它
基本上,使用此密鑰,我可以找到一種解決方法來獲取實際路徑。 問題:安裝了Office 2010(= Office 14)的Windows 7注冊表中沒有此類密鑰。
你們知道從C#啟動當前安裝的excel的任何方法嗎?
僅供參考,這是當前代碼部分,從x64 / x86計算機啟動Office11:
private void LaunchExcel(string arguments)
{
if (!Is64BitsOS())
{
Process process = new Process();
process.StartInfo.FileName = "excel";
process.StartInfo.Arguments = arguments;
process.Start();
}
else
{
Process process = new Process();
process.StartInfo.FileName = "c:/Program Files (x86)/Microsoft Office/Office11/excel.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.Arguments = arguments;
process.Start();
}
}
有什么想法可以使此代碼更通用嗎?
如果啟動Excel以打開Excel文件,則可以使用Excel文件作為FileName
啟動Process
,然后讓Windows Shell完成所有工作以查找關聯的應用程序。 顯然,您需要一個異常處理程序。
這將使您獨立於Office和Windows版本以及注冊表項。
否則,您可以采用其他方法來找到關聯的應用程序,例如here 。
這些建議的重點是:目前,您必須在安裝新的Office版本或使用其他Windows版本后立即更改代碼,同時可以避免這些依賴性。
在64位版本的Windows(XPx64,Vistax64,Win7x64)上運行的32位版本的Excel 2010將具有以下密鑰。 我認為這是您正在尋找HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Office\\14.0\\Excel\\InstallRoot
在64位版本的Windows(XPx64,Vistax64,Win7x64)上運行的64位版本的Excel 2010將具有以下密鑰
HKLM\\SOFTWARE\\Microsoft\\Office\\14.0\\Excel\\InstallRoot
從這里復制
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.