Word/Excel/PDF文件转换成HTML整理2011-03-07 cublog.cn 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:一、使用Jacob转换Word,Excel为HTML“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32 libraries。”首先下载Jacob包,JDK1.5以上需要使用Jacob1.9版本(JDK1.6尚未测试),与先前的Jacob1.7差别不大1、将压缩包解压后,Jacob.jar添加到Libraries中;2、将Jacob.dll放至“WINDOWSSYSTEM32”下面。需要注意的是:【使用IDE启动Web服务器时,系统读取不到Jacob.dll,例如用MyEclipse启动Tomcat,就需要将dll文件copy到MyEclipse安装目录的“jrein”下面。一般系统没有加载到Jacob.dll文件时,报错信息为:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”】新建类:Java代码
public class JacobUtil{public static final int WORD_HTML = 8;public static final int WORD_TXT = 7;public static final int EXCEL_HTML = 44;/** * WORD转HTML * @param docfile WORD文件全路径 * @param htmlfile 转换后HTML存放路径 */public static void wordToHtml(String docfile, String htmlfile){ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动wordtry{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(WORD_HTML) }, new int[1]);Variant f = new Variant(false);Dispatch.call(doc, "Close", f);}catch (Exception e){e.printStackTrace();}finally{app.invoke("Quit", new Variant[] {});}}/** * EXCEL转HTML * @param xlsfile EXCEL文件全路径 * @param htmlfile 转换后HTML存放路径 */public static void excelToHtml(String xlsfile, String htmlfile){ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动wordtry{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(EXCEL_HTML) }, new int[1]);Variant f = new Variant(false);Dispatch.call(excel, "Close", f);}catch (Exception e){e.printStackTrace();}finally{app.invoke("Quit", new Variant[] {});}}}当时我在找转换控件时,发现网易也转载了一偏关于Jacob使用帮助,但其中出现了比较严重的错误:String htmlfile = "C:\AA";只指定到了文件夹一级,正确写法是String htmlfile = "C:\AA\xxx.html";到此WORD/EXCEL转换HTML就已经差不多了,相信大家应该很清楚了:)