java通过jacob来读取word转换为htm格式

转自:http://blog.csdn.net/chinapi_hzh/article/details/5798689

因为微软没有公开word源代码,所以直接用java流来读取word的后果是读出来的全是乱码。所以必须通过jacob这个中间桥 。当然也可用poi来读取。
     先说用poi读取的方法吧。用poi读取的话,先要下载tm-extractors-0.4.jar百度一下可以找到。代码如下:

 1 import java.io.FileInputStream;
 2
 3 try {
 4             FileInputStream fileinputstream = new FileInputStream(filepath);
 5             WordExtractor extractor = new WordExtractor();
 6             temp = extractor.extractText(fileinputstream);
 7             System.out.println(temp + "==temp");
 8             fileinputstream.close();
 9         } catch (Exception ex) {
10             System.out.println("FileNotFoundException error" + ex.getMessage());
11         }

filepath为word文档路径,返回一个temp字符串。这样读出来的不是乱码了,但是效果并不如意。因为把word格式给丢掉了。
再说用jacob. 先到官方网站上去下载:http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368 jacob.zip.    下载之后解压,把jacob.jar放到项目/web-inf/lib下面。把jacob .dll放到c:/windos/system32/以及java/jdk*.*/jre/bin下面。这样就算是配置完成了。说代码:

 1 import com.jacob.activeX.ActiveXComponent;
 2 import com.jacob.com.Dispatch;
 3 import com.jacob.com.Variant;
 4 public boolean ChageFormat (String FolderPath,String FileName){
 5      String FileFormat = "";
 6      System.out.println(FolderPath);
 7      FileFormat = FileName.substring(FileName.length()-4,FileName.length());
 8      System.out.println(FileFormat);
 9      if(FileFormat.equalsIgnoreCase(".doc"))
10      {
11          String DocFile = FolderPath +"//"+ FileName;
12          System.out.println("word文件路径:"+DocFile);
13          //word文件的完整路径
14          String HtmlFile = DocFile.substring(0, (DocFile.length() - 4)) + ".htm";
15          System.out.println("htm文件路径:"+HtmlFile);
16          //html文件的完整路径
17          ActiveXComponent app = new ActiveXComponent("Word.Application");
18          //启动word
19          try
20          {
21            app.setProperty("Visible", new Variant(false));
22            //设置word程序非可视化运行
23            Dispatch docs = app.getProperty("Documents").toDispatch();
24            Dispatch doc = Dispatch.invoke(docs,"Open", Dispatch.Method, new Object[]{DocFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();
25            //打开word文件
26            Dispatch.invoke(doc,"SaveAs",Dispatch.Method, new Object[]{HtmlFile,new Variant(8)}, new int[1]);
27            //作为htm格式保存文件
28            Dispatch.call(doc, "Close",new Variant(false));
29            //关闭文件
30          }
31          catch (Exception e)
32          {
33            e.printStackTrace();
34          }
35          finally
36          {
37            app.invoke("Quit", new Variant[] {});
38            //退出word程序
39          }
40          //转化完毕
41          return true;
42      }
43      return false;
44    }

FolderPath为word存放路径。FileName为word名称。通过这个方法就把word文件转成的htm文件。这时候就可以用流来读取htm文件了,读出来的既不是乱码。并且带有格式。
另外要强调的是jacob这个组件和jdk,以及windows版本都有关系。所以版本一定要匹配。否则会报错。版本的问题就要挨个去试了。没有捷径可走。

时间: 2024-10-12 07:51:53

java通过jacob来读取word转换为htm格式的相关文章

Java读取word文档解决方案

java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java2Word.jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄:itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法.经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

Java读取word文件,字体,颜色

在Android读取Word文件时,在网上查看时可以用tm-extractors,但好像没有提到怎么读取Word文档中字体的颜色,字体,上下标等相关的属性.但由于需要,要把doc文档中的内容(字体,下划线,颜色等)读取应用到android中(不包括图片和图表). 后面采用的是poi三方jar包(原包太大,可以从源代码里自己抽取有用的一些代码减少包的大小). 我的想法是:把doc中的内容解析出来后,加上html对应的标签,在android中通过Html.fromHtml在TextView中进行显示

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

Java读取word文件的程序演示

完成对office文件的操作可以借助apache.poi包(我用的poi-3.10-FINAL),导入相应的jar包(最好全部导入) 下面的程序演示了一些操作word的过程,详细的函数功能可以查看此包的官方API import java.io.*; import org.apache.poi.POIXMLDocument; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.*; import

java读取word内容

暂时只写读取word内容的方法. 依赖的jar: poi-3.9-20121203.jarpoi-ooxml-3.9-20121203.jarxmlbeans-2.3.0.jar package com.word; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.POIXMLDocument; import org.apache.poi.P

Java使用Jacob操作word

近期项目需要根据word模板动态生成word文档,在网上看了些资料,在介绍的几种方法中选择了jacob方式,根据网上的资料,能解决大部分的问题,比如,生成表格,设置字体.段落格式,插入图片.设置图片格式. 可是项目中生成的word 文档还需要生成目录页,分割章节,网上找了很多资料,都没找到相关的方法,最后看到一篇博客,提供了一个思路,Java通过jacob操作office的宏,加上之前有过写宏的经验,一步步的实验终于搞定了. 博客地址:http://men4661273.iteye.com/bl

java 读取word

读取word文件 import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.POIXMLDocument; import org.apache.poi.POIXMLTextExtractor; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.openx

Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pd

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.ziph