本來的需求是,檢測用戶電腦上是否已安裝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[] {}); } }