当前位置: 首页 > 面试题库 >

使用Java确定Microsoft Office版本

翟渝
2023-03-14
问题内容

我编写了一个程序,该程序创建了一组输出到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版本的解析作为练习;-)



 类似资料:
  • 问题内容: 我想知道是否有办法确定从JVM内部运行的Linux版本(即,区分RHEL4,RHEL5)。我只是在寻找一种一致的方式来区分操作系统及其版本。 问题答案: 您也可以看看lsb_release 会给你类似的东西:

  • 问题内容: 尝试将项目上传到并出现错误: 我读到它是等级错误,已在较高版本中修复,我尝试将版本更改为,但出现另一个错误: Gradle同步失败:无此类属性:类:org.gradle.api.attributes.Usage FOR_RUNTIME有关更多详细信息,请参阅IDE日志(帮助|显示日志)(571毫秒) 摇篮属性: 建立gradle项目 问题答案: 您还应该删除Java JDK。只需运行以

  • 问题内容: 我使用终端安装了Android Studio的新副本,但在创建新项目时出现错误“无法确定Java版本”。同时安装了JDK和SDK。Android Studio已更新为最新版本。我正在使用Ubuntu 14.04 LTS 问题答案: 我只是将默认的Java JDK从Oracle JDK更改为OpenJDK。奇迹般有效。

  • 我遵循了React本机错误:“无法从'9.0.1'确定java版本。”并更改为 在project_path/android/gradle/wrapper/gradle-wrapper.properties中 但这并没有解决我的问题,它显示了一个新的错误,不能添加任务“wrapper”,因为具有该名称的任务已经存在。

  • 在我的Gradle脚本中,我使用了一些库依赖项,比如 我现在想在应用程序中显示哪个版本的acutally是使用的。最简单的方法是使用保存版本信息。但是我怎么才能知道gradle下载的是哪一个版本。有没有办法在中确定这一点,或者我必须像这里描述的那样从路径中提取它?

  • null 有人有过同样的问题吗?它是否与变量上设置的路径相关?