java采用jacob操作word文档和Excel 转换成html文件

在这里主要是介绍一个中间件——Jacob,通过该组件你可以在java应用中调用COM组件和Win32 Library。
        首先,需要下载Jacob包,JDK1.5需要使用Jacob1.9版本;JDK1.4及以下需要使用Jacob1.8及以下版本。
        然后,将压缩包解压后,将Jacob.jar添加到Libraries中;
        接着,将Jacob.dll放至WINDOWS/SYSTEM32中。注意:使用IDE启动WEB服务器时,系统是读取不到Jacob.dll,比如用MyEclipse启动Tomcat时就需要将dll文件拷贝到JDK的bin目录下。如果系统没有加载到Jacob.dll文件时,是会报如下错误的:java.lang.UnsatisfiedLinkError:no jacob in java.library.path。

代码如下:

  1. public class JacobUtil   {   
  2.     public static final int WORD_HTML = 8;   
  3.     public static final int WORD_TXT = 7;   
  4.     public static final int EXCEL_HTML = 44;   
  5.   
  6.     /**
  7.       * WORD转HTML
  8.       * @param docfile WORD文件全路径
  9.       * @param htmlfile 转换后HTML存放路径
  10.       */  
  11.     public static void wordToHtml(String docfile, String htmlfile)    {   
  12.          ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word   
  13.         try  {   
  14.              app.setProperty("Visible", new Variant(false));   
  15.              Dispatch docs = app.getProperty("Documents").toDispatch();   
  16.              Dispatch doc = Dispatch.invoke(   
  17.                      docs,   
  18.                     "Open",   
  19.                      Dispatch.Method,   
  20.                     new Object[] { docfile, new Variant(false),   
  21.                             new Variant(true) }, new int[1]).toDispatch();   
  22.              Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {   
  23.                      htmlfile, new Variant(WORD_HTML) }, new int[1]);   
  24.              Variant f = new Variant(false);   
  25.              Dispatch.call(doc, "Close", f);   
  26.          }   catch (Exception e)   {   
  27.              e.printStackTrace();   
  28.          }    finally  {   
  29.              app.invoke("Quit", new Variant[] {});   
  30.          }   
  31.      }   
  32.   
  33.     /**
  34.       * EXCEL转HTML
  35.       * @param xlsfile EXCEL文件全路径
  36.       * @param htmlfile 转换后HTML存放路径
  37.       */  
  38.     public static void excelToHtml(String xlsfile, String htmlfile)   {   
  39.          ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动word   
  40.         try  {   
  41.              app.setProperty("Visible", new Variant(false));   
  42.              Dispatch excels = app.getProperty("Workbooks").toDispatch();   
  43.              Dispatch excel = Dispatch.invoke(   
  44.                      excels,   
  45.                     "Open",   
  46.                      Dispatch.Method,   
  47.                     new Object[] { xlsfile, new Variant(false),   
  48.                             new Variant(true) }, new int[1]).toDispatch();   
  49.              Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {   
  50.                      htmlfile, new Variant(EXCEL_HTML) }, new int[1]);   
  51.              Variant f = new Variant(false);   
  52.              Dispatch.call(excel, "Close", f);   
  53.          }   catch (Exception e)   {   
  54.              e.printStackTrace();   
  55.          }   finally   {   
  56.              app.invoke("Quit", new Variant[] {});   
  57.          }   
  58.      }   
  59. }  

至此,Word/Excel转换HTML就已经差不多了

posted @ 2014-09-02 14:08  萧痕♂泪  阅读(1741)  评论(0)    收藏  举报