由于我们开发所用的office版本和客户用的版本经常不一样,所以我们开发的时候得考虑周全,将所有版本的情况都要考虑进去,这就需要识别office版本,看到有人写得很好了,特转来留用。
private void button1_Click(object sender, EventArgs e)
{
string officeShowStr =GetExcelVerStr();
MessageBox.Show(officeShowStr);
}
//第二种方法
public static double CheckExcelVer()
{
Type objExcelType = Type.GetTypeFromProgID("Excel.Application");
if (objExcelType == null)
{
return 0;
}
object objApp = Activator.CreateInstance(objExcelType);
if (objApp == null)
{
return 0;
}
object objVer = objApp.GetType().InvokeMember("Version", BindingFlags.GetProperty, null, objApp, null);
double iVer = Convert.ToDouble(objVer.ToString());
objVer = null;
objApp = null;
objExcelType = null;
GC.Collect();
return iVer;
}
public static String GetExcelVerStr()
{
String s1 = " Office ";
double excelver;
excelver = CheckExcelVer();
if (excelver == 0)
{
MessageBox.Show("无法识别Excel的版本", "错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
s1 = "无法识别 office 版本";
}
else if (excelver >= 14) s1 += "2010或以上";
else if (excelver >= 12) s1 += "2007";
else if (excelver >= 11) s1 += "2003";
else if (excelver >= 10) s1 += "XP";
else if (excelver >= 9) s1 += "2000";
else if (excelver >= 8) s1 += "97";
else if (excelver >= 7) s1 += "95";
return s1;
}