使用Java确定Microsoft Office版本

我编写了一个程序,该程序创建了一组输出到excel电子表格的数据。我最初使用jexcel库将数据写入文件,但是我想更新程序,以便它可以检查并查看是否应创建“

.xls”或“ .xlsx”文件,然后写入适当的文档类型。就写入“ .xlsx”文件而言,Apache

POI似乎是最佳选择,但是有关确定正确文件类型的任何想法吗?

我可以在命名文件时让用户选择,但这似乎对用户来说是额外的工作,我假设有些用户不知道他们想要的文件类型。

有任何想法吗?

另外,我假设操作系统是Windows,并且用户具有某些版本的excel,在其他情况下,我只会选择默认文件类型。

回答:

一种方法是调用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

这是一个 例子:

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);

}

catch (Exception err) {

err.printStackTrace();

}

}

}

您可能想要添加更多错误检查,并且将练习从返回的路径中提取Office版本的解析作为练习;-)

以上是 使用Java确定Microsoft Office版本 的全部内容, 来源链接: utcz.com/qa/407990.html

回到顶部