由於我們開發所用的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;
}