2010-02-28 58 views

回答

2

我可以建議你有點棘手變通:

您可以方便地安裝的字體列表。不同版本的MS-Office具有不同的獨特字體。你需要谷歌哪些字體對應於哪個版本,它可以給你一些信息(例如,如果你可以看到'康斯坦蒂亞',那麼它是辦公室2007年)。

1

在ms office的安裝中是否有特定的文件區分一個版本和另一個版本?如果是,你可以閱讀並檢測。

其他你需要做的與可能安裝(到O/S)MS Office ActiveX控件的接口,並查詢版本號。

1

一種方法是調用Windows ASSOC和FTYPE命令,捕獲輸出並解析它以確定安裝的Office版本。

C:\Users\me>assoc .xls 
.xls=Excel.Sheet.8 

C:\Users\me>ftype Excel.sheet.8 
Excel.sheet.8="C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE" /e 

Java代碼:

import java.io.*; 
public class ShowOfficeInstalled { 
    public static void main(String argv[]) { 
     try { 
     Process p = Runtime.getRuntime().exec 
      (new String [] { "cmd.exe", "/c", "assoc", ".xls"}); 
     BufferedReader input = 
      new BufferedReader 
      (new InputStreamReader(p.getInputStream())); 
     String extensionType = input.readLine(); 
     input.close(); 
     // extract type 
     if (extensionType == null) { 
      System.out.println("no office installed ?"); 
      System.exit(1); 
     } 
     String fileType[] = extensionType.split("="); 

     p = Runtime.getRuntime().exec 
      (new String [] { "cmd.exe", "/c", "ftype", fileType[1]}); 
     input = 
      new BufferedReader 
      (new InputStreamReader(p.getInputStream())); 
     String fileAssociation = input.readLine(); 
     // extract path 
     String officePath = fileAssociation.split("=")[1]; 
     System.out.println(officePath); 
     // 
     // output if office is installed : 
     // "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE" /e 
     // the next step is to parse the pathname but this is left as an exercise :-) 
     // 
     } 
     catch (Exception err) { 
     err.printStackTrace(); 
     } 
    } 
    } 

裁判:Detect the installed Office version

相關問題