2011-09-23 28 views
1

我試圖在我的應用程序中啓動具有特定參數的Microsoft Excel(即,額外的xla & xll)。檢查已安裝的Excel版本並啓動它

現在它工作正常,因爲我的所有用戶只安裝了Office11(= 2003)。

我公司將切換到Windows 7 & Office 2010和我在邏輯上無法啓動任何練成,因爲該.exe不位於C:\Program Files:\Microsoft Office\Office11\EXCEL.EXE

我跑在註冊表中進行快速檢查,看我可以肯定地檢查當前安裝的版本。還有大量文章解釋如何獲取當前安裝的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嗎?

僅供參考,這裏是當前的代碼段,從64位/ 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(); 
     } 
    } 

任何想法,以使代碼更通用的?

回答

1

在64位版本的Windows(XPx64,Vistax64,Win7x64)上運行的32位版本的Excel 2010將具有以下密鑰。 我認爲這是你正在尋找 HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Excel\InstallRoot

的Excel 2010的64位版本的Windows(XPx64,Vistax64,Win7x64)的64位版本上運行的關鍵將具有以下關鍵

HKLM\SOFTWARE\Microsoft\Office\14.0\Excel\InstallRoot

抄自here

2

如果您啓動Excel以打開Excel文件,則可以使用Excel文件FileName啓動Process,然後讓Windows shell執行所有工作以查找關聯的應用程序。顯然你需要一個異常處理程序。

這將使您獨立於Office和Windows版本和註冊表項。

否則,您可以採取不同的方法並找到關聯的應用程序,如here

這些建議的意義在於:目前,只要安裝新的Office版本或使用不同的Windows版本,就必須立即更改代碼,而有一種方法可以避免這些依賴關係。

相關問題