Определить версию / культуру Excel через Microsoft.Office.Interop.Excel - PullRequest
2 голосов
/ 26 мая 2010

Как мне добиться этого в .NET / C #?

Ответы [ 3 ]

7 голосов
/ 10 августа 2010

Вы можете использовать этот фрагмент кода: (взято из одного из моих проектов, поэтому не гарантированно работать из коробки)

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;
}
0 голосов
/ 23 декабря 2015
 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!");



    }
0 голосов
/ 26 мая 2010

Прочитайте ваш файл app.config, так как он поместит туда ссылку:

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

При чтении вам, возможно, придется открыть файл и прочитать его содержимое, поскольку я не думаю, что вы можете специально читать сборки.

...