2

如何在 .NET/C# 中实现这一点?

4

3 回答 3

7

您可以使用此代码段:(取自我的一个项目,因此不能保证开箱即用)

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;
}
于 2010-08-10T08:24:15.143 回答
0

阅读您的 app.config 文件,因为它会将引用放在那里:

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

通过“阅读”,您可能必须打开文件并阅读内容,因为我认为您不能专门阅读程序集。

于 2010-05-26T16:05:51.080 回答
0
 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!");



    }
于 2015-12-23T12:22:59.303 回答