Java Word转Html

最近转换的需求比较多,最近做了一个Word转Html的

这个要导一个包和配置一个文件

1.jacob.jar

2.与jacob.jar相对应的jacob.dll(放在windows/sys32下或者放在jre下面)

ExpandedBlockStart.gif代码
  1 package test;
  2 
  3 import java.io.File;
  4 
  5 import com.jacob.activeX.ActiveXComponent;
  6 import com.jacob.com.Dispatch;
  7 import com.jacob.com.Variant;
  8 
  9 public class WordToHtml {
 10 
 11     int WORD_HTML = 8;
 12     int WORD_TXT = 7;
 13     int EXCEL_HTML = 44;
 14 
 15     /**
 16      * WORD转HTML
 17      * 
 18      * @param docfile
 19      *            WORD文件全路径
 20      * @param htmlfile
 21      *            转换后HTML存放路径
 22      */
 23     public void wordToHtml(String docfile, String htmlfile) {
 24         ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
 25         try {
 26             app.setProperty("Visible"new Variant(false));
 27             Dispatch docs = app.getProperty("Documents").toDispatch();
 28             Dispatch doc = Dispatch.invoke(
 29                     docs,
 30                     "Open",
 31                     Dispatch.Method,
 32                     new Object[] { docfile, new Variant(false),
 33                             new Variant(true) }, new int[1]).toDispatch();
 34             Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
 35                     htmlfile, new Variant(WORD_HTML) }, new int[1]);
 36             Variant f = new Variant(false);
 37             Dispatch.call(doc, "Close", f);
 38         } catch (Exception e) {
 39             e.printStackTrace();
 40         } finally {
 41             app.invoke("Quit"new Variant[] {});
 42         }
 43     }
 44 
 45     /**
 46      * EXCEL转HTML
 47      * 
 48      * @param xlsfile
 49      *            EXCEL文件全路径
 50      * @param htmlfile
 51      *            转换后HTML存放路径
 52      */
 53     public void excelToHtml(String xlsfile, String htmlfile) {
 54         ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel
 55         try {
 56             app.setProperty("Visible"new Variant(false));
 57             Dispatch excels = app.getProperty("Workbooks").toDispatch();
 58             Dispatch excel = Dispatch.invoke(
 59                     excels,
 60                     "Open",
 61                     Dispatch.Method,
 62                     new Object[] { xlsfile, new Variant(false),
 63                             new Variant(true) }, new int[1]).toDispatch();
 64             Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
 65                     htmlfile, new Variant(EXCEL_HTML) }, new int[1]);
 66             Variant f = new Variant(false);
 67             Dispatch.call(excel, "Close", f);
 68             System.out.println("wordtohtml转换成功");
 69         } catch (Exception e) {
 70             e.printStackTrace();
 71         } finally {
 72             app.invoke("Quit"new Variant[] {});
 73         }
 74     }
 75 
 76     /**
 77      * /删除指定文件夹
 78      * 
 79      * @param folderPath
 80      *            文件夹全路径
 81      * @param htmlfile
 82      *            转换后HTML存放路径
 83      */
 84     public void delFolder(String folderPath) {
 85         try {
 86             delAllFile(folderPath); // 删除完里面所有内容
 87             String filePath = folderPath;
 88             filePath = filePath.toString();
 89             java.io.File myFilePath = new java.io.File(filePath);
 90             myFilePath.delete(); // 删除空文件夹
 91         } catch (Exception e) {
 92             e.printStackTrace();
 93         }
 94     }
 95 
 96     /**
 97      * /删除指定文件夹下所有文件
 98      * 
 99      * @param path
100      *            文件全路径
101      */
102     public boolean delAllFile(String path) {
103         boolean flag = false;
104         File file = new File(path);
105         if (!file.exists()) {
106             return flag;
107         }
108         if (!file.isDirectory()) {
109             return flag;
110         }
111         String[] tempList = file.list();
112         File temp = null;
113         for (int i = 0; i < tempList.length; i++) {
114             if (path.endsWith(File.separator)) {
115                 temp = new File(path + tempList[i]);
116             } else {
117                 temp = new File(path + File.separator + tempList[i]);
118             }
119             if (temp.isFile()) {
120                 temp.delete();
121             }
122             if (temp.isDirectory()) {
123                 delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
124                 delFolder(path + "/" + tempList[i]);// 再删除空文件夹
125                 flag = true;
126             }
127         }
128         return flag;
129     }
130 
131     public static void main(String[] args) {
132         // TODO Auto-generated method stub
133         WordToHtml wordtohtml = new WordToHtml();
134         wordtohtml.wordToHtml("D:\\test.doc""D:\\test.html");
135         System.out.println("word转html成功");
136     }
137 }
138 

  每种功能的实现方法有很多,希望各位可以交流不同的思想和方法。可以加QQ412546724。呵呵

 

转载于:https://www.cnblogs.com/jiayi/archive/2010/06/02/1750220.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leveldb中为什么L 0层中每个sst文件中key的范围都是有重叠的?

在leveldb中&#xff0c;level 0层中的sst文件是由immutable memtable通过后台线程flush得到的&#xff0c;但是由于immutable memtable中的key可能是由重复的&#xff0c;因此在leveldb中将sst文件中key的范围有重叠的所有sst文件都放在了level 0层中&#xff0c;而其他level层…

文本分类的一种对抗训练方法

最近阅读了有关文本分类的文章&#xff0c;其中有一篇名为《Adversarail Training for Semi-supervised Text Classification》, 其主要思路实在文本训练时增加了一个扰动因子&#xff0c;即在embedding层加入一个小的扰动&#xff0c;发现训练的结果比不加要好很多。 模型的网…

在leveldb中,为什么要有immutable memtable?

目的是&#xff1a;为了防止写入kv时被阻塞。 设想&#xff0c;如果没有immutable memtable&#xff0c;当memtable满了之后后台线程需要将memtable 立即flush到新建的sst中&#xff0c;在flush的过程中&#xff0c;新的KV记录是无法写入的&#xff0c;只能等待&#xff0c;就…

密码强弱提示(27)

密码的强弱提示是对用户填写登陆密码的复杂程度来给出提示&#xff0c;使用密码的强弱提示可以增强用户对密码的保护意识&#xff0c;对如今的网络是非常有必要的&#xff0c;本程序中当用户输入完密码后&#xff0c;网页会自动的对用户输入的密码给出强弱判断。 使用JavaScrip…

《In Search of an Understandable Consensus Algorithm》翻译

Abstract Raft是一种用于管理replicated log的consensus algorithm。它能和Paxos产生同样的结果&#xff0c;有着和Paxos同样的性能&#xff0c;但是结构却不同于Paxos&#xff1b;它让Raft比Paxos更易于理解&#xff0c;并且也为用它构建实际的系统提供了更好的基础。为了增强…

深度点评五种常见WiFi搭建方案

总结十年无线搭建经验&#xff0c;针对企业常见的五种办公室无线网络方案做个简要分析&#xff0c;各种方案有何优劣&#xff0c;又适用于那种类型的企业。方案一&#xff1a;仅路由器或AP覆盖简述&#xff1a;使用路由器或AP覆盖多个无线盲区&#xff0c;多个AP的部署实现整体…

深入理解Presto

深入理解Presto 简介 Presto是一个facebook开源的分布式SQL查询引擎&#xff0c;适用于交互式分析查询&#xff0c;数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出&#xff0c;在于以下几点&#xff1a; …

设置VS2017背景图片

设置方法很简单&#xff1a;安装扩展ClaudiaIDE 1、在这里下载扩展&#xff0c;https://visualstudiogallery.msdn.microsoft.com/9ba50f8d-f30c-4e33-ab19-bfd9f56eb817 2、然后双击即可完成安装。 之后重启VS&#xff0c;就可以看到编程背景上多了一个萌妹子&#xff0c;据说…

证书的应用之一 —— TCPSSL通信实例及协议分析(上)

SSL(Security Socket Layer)是TLS(Transport Layer Security)的前身&#xff0c;是一种加解密协议&#xff0c;它提供了再网络上的安全传输&#xff0c;它介于网络通信协议的传输层与应用层之间。 为实现TCP层之上的ssl通信&#xff0c;需要用到数字证书。本文通过具体例子来说…

ClickedOnce部署方法

1.ClickedOnce部署时有些DLL和配置文件无法自动部署到系统当中&#xff0c;只能用Manifest Manager Tool 修改manifest 文件 /Files/Tonyyang/Software/ManifestManagerUtility.rar 2.部署文件结构 3.部署方法 首先用VS自带的ClickedOnce发布应用程序&#xff08;博客园有&…

树莓派安装MySQL数据库与卸载

出处&#xff1a; 1、http://www.cnblogs.com/liyangLife/p/4500115.html 2、https://blog.csdn.net/huayucong/article/details/49736427 3、https://www.imooc.com/article/23132?block_idtuijian_wz 4、http://www.runoob.com/mysql/mysql-install.html&#xff08;Debian系…

Visual Studio.net 2010 Windows Service 开发,安装与调试

本示例完成一个每隔一分钟向C:\log.txt文件写入一条记录为例&#xff0c;讲述一个Windows Service 程序的开发,安装与调试 原程序&#xff0c;加文档示例下载 /Files/zycblog/SourceCode.rar 目录索引 1 开发工具 2 开发过程 3 安装 4 开发调试 5 注意事项 6 参考资料…

ArcGis dbf读写——挂接Excel到属性表 C#

ArcMap提供了挂接Excel表格信息到属性表的功能&#xff0c;但是当数据量较大到以万计甚至十万计的时候这个功能就歇菜了&#xff0c;当然&#xff0c;你可以考虑分段挂接。这个挂接功能只是做了一个表关联&#xff0c;属性记录每个字段的信息需要通过“字段计算器”计算过来。 …

VisualStudioAddIn2017.vsix的下载安装和使用

本加载项是用于Visual Studio的&#xff0c;下载以后按照如下步骤进行安装&#xff1a; 完全退出Visual Studio把下载了的文件解压缩&#xff0c;会产生一个VisualStudioAddIn2017.vsix文件双击该文件&#xff0c;按照提示安装重启Visual Studio安装完成后的使用方法&#xff0…

Presto基本概念

Presto基本概念 Presto是Facebook开源的MPP SQL引擎&#xff0c;旨在填补Hive在速度和灵活性&#xff08;对接多种数据源&#xff09;上的不足。相似的SQL on Hadoop竞品还有Impala和Spark SQL等。这里我们介绍下Presto的基本概念&#xff0c;为后续的笔记做基础。 Operator …

2019春第六周编程总结

这个作业属于哪个课程C语言程序设计Ⅱ这个作业要求在哪里https://edu.cnblogs.com/campus/zswxy/MS/homework/2829我在这个课程的目标是利用指针知识解决相关实际问题在具体哪方面帮我实现目标设计密码开锁、交换变量解决问题以及电码加密参考文献C语言基础、http://www.w3scho…

Exchange企业实战技巧(26)在Outlook中打开多个邮箱

工作中&#xff0c;有时要需要让某个用户在outlook中同时打开多个exchange邮箱&#xff0c;对于outlook2010来说&#xff0c;是支持多个Exchange邮箱用户账户的并存&#xff0c;而outlook2007则不支持。那该功能有没其他实现方法呢&#xff1f;答案是有的。 如果你的Exchange是…

Emulator Error: Could not load OpenGLES emulati...

为什么80%的码农都做不了架构师&#xff1f;>>> 模拟器提示警告&#xff1a;Emulator Error: Could not load OpenGLES emulation library: Could not load DLL! 亲测可用&#xff1a; 从SDK\tools\lib目录下将一下四个dll文件复制到SDK\tools&#xff0c;重启模…

关于.net的垃圾回收和大对象处理_标记

CLR垃圾回收器根据所占空间大小划分对象。大对象和小对象的处理方式有很大区别。比如内存碎片整理 —— 在内存中移动大对象的成本是昂贵的&#xff0c;让我们研究一下垃圾回收器是如何处理大对象的&#xff0c;大对象对程序性能有哪些潜在的影响。 大对象堆和垃圾回收 在.Net …

三篇文章了解 TiDB 技术内幕——说存储

此文转载了 申砾 PingCAP 的文章&#xff1a;https://mp.weixin.qq.com/s?__bizMzI3NDIxNTQyOQ&mid2247484822&idx1&sn5434362800d8dcc0ca69d2f3f3260173&chksmeb1622fcdc61abea428f74b26a24bc589d524dd3b666d9b124809300f488d00b33a315a87792&scene21#we…