关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 16982|回复: 4

使用java将 WORD,EXCEL转化为HTML

[复制链接]
发表于 2013-5-29 20:53:34 | 显示全部楼层 |阅读模式
一、了解Jacob

先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。这是一个开始于1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献。

下载地址:http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368
二、Jacob安装

1、我们解开下载的jacob_1.9.zip,在文件夹中找到jacob.dll和jacob.jar两个文件
2、将压缩包解压后,Jacob.jar添加到Libraries中;
3、将Jacob.dll放至“WINDOWS\SYSTEM32”下面。
需要注意的是:
【使用IDE启动Web服务器时,系统读取不到Jacob.dll,例如用MyEclipse启动Tomcat,就需要将dll文件copy到MyEclipse安装目录的“jre\bin”下面。
一般系统没有加载到Jacob.dll文件时,报错信息为:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”】

三、使用Jacob转换Word,Excel为HTML
JAVA代码:
TransformFiletoHtml.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class TransformFiletoHtml
{
int WORD_HTML = 8;
int WORD_TXT = 7;
int EXCEL_HTML = 44;
  
/**
  * WORD转HTML
  * @param docfile WORD文件全路径
  * @param htmlfile 转换后HTML存放路径
  */
public void wordToHtml(String docfile, String htmlfile)
{
  ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
  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(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 void excelToHtml(String xlsfile, String htmlfile)
{
  ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel
  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(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[] {});
  }
}

/**
  * /删除指定文件夹
  * @param folderPath 文件夹全路径
  * @param htmlfile 转换后HTML存放路径
  */
  public void delFolder(String folderPath)
                {
      try
      {
         delAllFile(folderPath); //删除完里面所有内容
         String filePath = folderPath;
         filePath = filePath.toString();
         java.io.File myFilePath = new java.io.File(filePath);
         myFilePath.delete(); //删除空文件夹
      } catch (Exception e) {e.printStackTrace();}
}

/**
  * /删除指定文件夹下所有文件
  * @param path 文件全路径
  */
public boolean delAllFile(String path)
    {
        boolean flag = false;
        File file = new File(path);
        if (!file.exists())
        {
          return flag;
        }
        if (!file.isDirectory())
        {
          return flag;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++)
        {
           if (path.endsWith(File.separator))
           {
              temp = new File(path + tempList);
           }
           else
           {
               temp = new File(path + File.separator + tempList);
           }


 发表于 2013-6-21 00:53:59
使用java将 WORD,EXCEL转化为HTML[tthread=nanguahui, 刘宝贤]http://app.qlogo.cn/mbloghead/a71708cc2d504937ce3a[/tthread]
发表于 2013-6-30 16:55:24 | 显示全部楼层
这代码没贴全呢·····
发表于 2013-7-2 10:51:41 | 显示全部楼层
前几天我也在用,但是用在web项目中有个问题,想请教一下:
问题是:提示jacob.dll已经加载过其它dll
java.lang.UnsatisfiedLinkError: Native Library D:\Java\jdk1.7.0_07\bin\jacob-1.16-M1-x64.dll already loaded in another classloader
异常信息如上
发表于 2013-7-8 03:03:23 | 显示全部楼层
      
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表