Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > java通过jacob来读取word
【标  题】:java通过jacob来读取word
【关键字】:java,jacob,word
【来  源】:http://blog.csdn.net/hellen_cap/archive/2006/12/13/1441345.aspx

java通过jacob来读取word

Your Ad Here

         因为微软没有公开word源代码,所以直接用java流来读取word的后果是读出来的全是乱码。所以必须通过jacob这个中间桥 。当然也可用poi来读取。

        先说用poi读取的方法吧。用poi读取的话,先要下载tm-extractors-0.4.jar百度一下可以找到。代码如下:

            import org.textmining.text.extraction.WordExtractor;

           try {
                  FileInputStream fileinputstream = new FileInputStream(
                          filepath);
                 WordExtractor   extractor   =   new   WordExtractor();   
                 temp =extractor.extractText(fileinputstream); 
                    System.out.println(temp+"==temp");
                  fileinputstream.close();
                } catch (Exception ex) {
                   System.out.println("FileNotFoundException error" +
                                     ex.getMessage());
                }

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下面。这样就算是配置完成了。说代码:

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

 public boolean ChageFormat (String FolderPath,String FileName){

        String FileFormat = "";
        System.out.println(FolderPath);
        FileFormat = FileName.substring(FileName.length()-4,FileName.length());
        System.out.println(FileFormat);

        if(FileFormat.equalsIgnoreCase(".doc"))
        {
            String DocFile = FolderPath +"\\"+ FileName;

            System.out.println("word文件路径:"+DocFile);
            //word文件的完整路径

            String HtmlFile = DocFile.substring(0, (DocFile.length() - 4)) + ".htm";

            System.out.println("htm文件路径:"+HtmlFile);
            //html文件的完整路径

            ActiveXComponent app = new ActiveXComponent("Word.Application");
            //启动word

            try
            {
                app.setProperty("Visible", new Variant(false));
                //设置word程序非可视化运行

                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();
                //打开word文件

                Dispatch.invoke(doc,"SaveAs",Dispatch.Method, new Object[]{HtmlFile,new Variant(8)}, new int[1]);
                //作为htm格式保存文件

                Dispatch.call(doc, "Close",new Variant(false));
                //关闭文件

            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                app.invoke("Quit", new Variant[] {});
                //退出word程序
            }
            //转化完毕
            return true;
        }
        return false;
    }
 FolderPath为word存放路径。FileName为word名称。通过这个方法就把word文件转成的htm文件。这时候就可以用流来读取htm文件了,读出来的既不是乱码。并且带有格式。

另外要强调的是jacob这个组件和jdk,以及windows版本都有关系。所以版本一定要匹配。否则会报错。版本的问题就要挨个去试了。没有捷径可走。

如何输出表格到word:【上一篇】
jTest手册:【下一篇】
【相关文章】
  • 如何输出表格到word
  • 对于java中三种比较字符串的方法的理解
  • 学不可以已--我一年Java之路的回顾,反思以及展望 (转)
  • 在Ubuntu中安装JAVA环境
  • Firebug-javascript/css/ajax/dom调试器【这款不错】
  • jsp-java-mysql字符集统一
  • JavaScript置页面不可用
  • javascript高级应用
  • 采用母板页的页面使用JavaScript问题
  • Javascript高级应用:文件操作篇
  • 【随机文章】
  • apach+mysql+php 不能解析php文件.帮帮忙!
  • 四招应对冲击波
  • php 调用 java类 常见配置错误(Inber 原作)
  • 禁用不是好事 走出虚拟内存禁用的误区
  • Photoshop鲜为人知的的75个技巧-复制的技巧
  • Jar文件包间接及Jar命令开发实例详解
  • 我公司想实行网络管理,可能需要一台文件+邮件服务器
  • 魔力 不可思议任务1 拿:我是小女孩 的称号
  • Acegi简介
  • 在Windows XP中制作屏保
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.