簡體   English   中英

檢查已安裝的Excel版本並啟動它

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM