簡體   English   中英

通過Microsoft.Office.Interop.Excel確定Excel版本/文化

[英]Determine Excel Version/Culture via Microsoft.Office.Interop.Excel

如何在.NET / C#中實現?

您可以使用以下代碼段:(摘自我的一個項目,因此不能保證立即可用)

Microsoft.Office.Interop.Excel.Application tExcel = new Application();
CultureInfo cSystemCulture = Thread.CurrentThread.CurrentCulture;
CultureInfo cExcelCulture = new CultureInfo(tExcel.LanguageSettings.get_LanguageID(
    Microsoft.Office.Core.MsoAppLanguageID.msoLanguageIDUI));

try
{
    Thread.CurrentThread.CurrentCulture = cExcelCulture;
    double tVersion;
    bool tParseSucceded = double.TryParse(tExcel.Version, out tVersion);

    // 12 is the first version with .xlsx extension
    if (tVersion > 11.5)
        cDefaultExtension = ".xlsx";
    else
        cDefaultExtension = ".xls";

}
catch (Exception aException)
{
    cLogger.Debug("error retrieving excel version.", aException);
    cLogger.Error("error retrieving excel version.");
}
finally
{
    Thread.CurrentThread.CurrentCulture = cSystemCulture;
}

閱讀您的app.config文件,因為它將在其中放置引用:

<compilation debug="false">
    <assemblies>
        <add assembly="Office, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
    </assemblies>
</compilation>

通過“讀取”,您可能必須打開文件並讀取內容,因為我認為您不能專門讀取程序集。

 void Method1()
    {
        string strEVersionSubKey = "\\Excel.Application\\CurVer"; //HKEY_CLASSES_ROOT/Excel.Application/Curver
        string strValue = null;
        string strVersion = null;
        RegistryKey rkVersion = null;

        rkVersion = Registry.ClassesRoot.OpenSubKey(strEVersionSubKey, false);


        strValue = (string)rkVersion.GetValue(string.Empty);

        strValue = strValue.Substring(strValue.LastIndexOf(".") + 1);


        switch (strValue) //Determine Version
        {
            case "7":
                strVersion = "95";
                break;

            case "8":
                strVersion = "97";
                break;

            case "9":
                strVersion = "2000";
                break;

            case "10":
                strVersion = "2002";
                break;

            case "11":
                strVersion = "2003";
                break;

            case "12":
                strVersion = "2007";
                break;

            case "14":
                strVersion = "2010";
                break;

            case "15":
                strVersion = "2013";
                break;

            case "16":
                strVersion = "2016";
                break;
        }

        MessageBox.Show("Excel " + strVersion + " Installed!");



    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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