檢測本機是否安裝了打開指定格式的軟件

本來的需求是,檢測用戶電腦上是否已安裝word、excel,若是是那就執行轉成html的操做,html

其中需求的庫有jacob和jRegistryjava

jacob:http://sourceforge.net/projects/jacob-project/files/jacob-project/     這是一個把word、excel啦轉換成html的庫。web

jRegistry:http://sourceforge.net/projects/jregistry/files/jregistry/   這個是使用java語言操做windows的註冊表的庫。windows

這個庫都有1一個.jar和.dll文件,app

jar放到類路徑,dll放到 c:\windows\system32 (若是是web項目請把dll放到jre的bin目錄下)ui

 

下面這段代碼的意圖,在執行下面的轉換操做以前作個判斷,判斷是否安裝了excel:spa

/**
	 * 檢測系統是否存在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[] {});
		}
	}
相關文章
相關標籤/搜索