检测本机是否安装了打开指定格式的软件

拟墨画扇 提交于 2019-12-07 15:31:08

原本的需求是,检测用户电脑上是否已安装word、excel,如果是那就执行转成html的操作,

其中需求的库有jacob和jRegistry

jacob:http://sourceforge.net/projects/jacob-project/files/jacob-project/     这是一个把word、excel啦转换成html的库。

jRegistry:http://sourceforge.net/projects/jregistry/files/jregistry/   这个是使用java语言操作windows的注册表的库。

这个库都有1一个.jar和.dll文件,

jar放到类路径,dll放到 c:\windows\system32 (如果是web项目请把dll放到jre的bin目录下)

 

下面这段代码的意图,在执行下面的转换操作之前做个判断,判断是否安装了excel:

/**
	 * 检测系统是否存在Excel软件,该方法通过读取注册表里的 [.xls]
	 * 打开方式的默认值确定打开excel文件的软件,有默认值就说明安装了相应软件。
	 * 
	 * @return  存在返回true,否为false
	 */
	public static boolean checkExcelIsExists() {

		RegistryKey r = new RegistryKey(
				RegistryKey
						.getRootKeyForIndex(RegistryKey.HKEY_CLASSES_ROOT_INDEX),
				".xls");
		if (r.hasDefaultValue()) {
			System.out.println("本机可以打开Excel文件");
			return true;
		}
		return false;
	}

使用jacob转换为html文件:

/**
	 * word 文件转换为html文件
	 * 
	 * @param docFile
	 * @param htmlFile
	 */
	public static void WordTransHtml(String docFile, String htmlFile) {
		ActiveXComponent app = new ActiveXComponent("Word.application");
		// ActiveXComponent xl = new ActiveXComponent("Excel.Application");

		try {
			app.setProperty("Visible", new Variant(false));
			Dispatch docs = app.getProperty("Documents").toDispatch();
			Dispatch doc = Dispatch.invoke(
					docs,
					"Open",
					Dispatch.Method,
					new Object[] { docFile, new Variant(false),
							new Variant(true) }, new int[1]).toDispatch();
			Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
					htmlFile, new Variant(8) }, new int[1]);
			Variant f = new Variant(false);
			Dispatch.call(doc, "Close", f);
		} finally {
			app.invoke("Quit", new Variant[] {});

		}

	}

	/**
	 * 转换Excel文件成HTML文件
	 * 
	 * @param xlsfile
	 *            excel文件全路径
	 * @param htmlfile
	 *            html文件全路径
	 */
	public static void ExcelTransHtml(String xlsfile, String htmlfile) {
		ActiveXComponent app = new ActiveXComponent("Excel1.Application");

		try {
			app.setProperty("Visible", new Variant(false));
			Dispatch excels = app.getProperty("Workbooks").toDispatch();
			Dispatch excel = Dispatch.invoke(
					excels,
					"Open",
					Dispatch.Method,
					new Object[] { xlsfile, new Variant(false),
							new Variant(true) }, new int[1]).toDispatch();
			Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
					htmlfile, new Variant(44) }, new int[1]);
			Variant f = new Variant(false);
			Dispatch.call(excel, "Close", f);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			app.invoke("Quit", new Variant[] {});
		}
	}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!