- 浏览: 34111 次
- 性别:
- 来自: 湖南
文章分类
最新评论
JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。
/** * 将jacob.dll放入JDK的bin目录下 * 把jacob.jar放入项目的WEB-INF\lib目录下 */ public class JacobHelper { private ActiveXComponent word; private Dispatch documents; private Dispatch doc; private Dispatch selection; private ActiveXComponent excel; private Dispatch workbooks; private Dispatch workbook; private void wordInit(){ if(word==null){ //创建一个word对象 word = new ActiveXComponent("Word.Application"); word.setProperty("Visible", new Variant(false)); //word不可见 word.setProperty("AutomationSecurity", new Variant(3)); //禁用宏 } if(documents==null){ //获取文挡属性 documents = word.getProperty("Documents").toDispatch(); } } private void wordDestory(){ try{ if(doc!=null){ //Dispatch.call(doc, "Close", new Variant(true)); Dispatch.invoke(doc, "Close", Dispatch.Method, new Object[]{new Variant(true)}, new int[1]); doc = null; } if(word!=null){ word.invoke("Quit", new Variant[]{}); word.safeRelease(); word = null; documents = null; } }catch(Exception ex){ ex.printStackTrace(); } } /** * 合并Word文档 */ public boolean wordUnite(String[] filePath, String outputPath){ if(filePath==null || filePath.length==0) return false; boolean successful = false; try{ wordInit(); //添加一个新文挡 doc = Dispatch.call(documents, "Add").toDispatch(); selection = word.getProperty("Selection").toDispatch(); for(int i=0;i<filePath.length;i++){ Dispatch.call(selection, "insertFile", filePath[i]); if(i<filePath.length-1){ Dispatch.call(selection, "TypeParagraph"); //换行 } } //文件另存为 Dispatch.call(doc, "SaveAs", outputPath); successful = true; }catch(Exception ex){ successful = false; ex.printStackTrace(); }finally{ wordDestory(); } return successful; } /** * Word转Html */ public boolean word2html(String wordFilePath, String htmlFilePath){ boolean successful = false; try{ wordInit(); //对象数组第三个表示是否以只读方式打开文件 doc = Dispatch.invoke(documents, "Open", Dispatch.Method, new Object[]{wordFilePath, new Variant(false), new Variant(true)}, new int[1]).toDispatch(); //另存为 Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[]{htmlFilePath, new Variant(8)}, new int[1]); //html-new Variant(8) txt-new Variant(2) successful = true; }catch(Exception ex){ successful = false; ex.printStackTrace(); }finally{ wordDestory(); } return successful; } private void excelInit(){ if(excel==null){ ComThread.InitSTA(); excel = new ActiveXComponent("Excel.Application"); excel.setProperty("Visible", new Variant(false)); } } private void excelDestory(){ try{ if(workbook!=null){ Dispatch.call(workbook, "Close", new Variant(true)); workbook = null; } if(excel!=null){ excel.invoke("Quit", new Variant[]{}); ComThread.Release(); excel = null; } }catch(Exception ex){ ex.printStackTrace(); } } public boolean excel2html(String excelFilePath, String htmlFilePath){ boolean successful = false; try{ excelInit(); //先删除旧文件 File file = new File(htmlFilePath); if(file.exists() && file.canRead()){ file.delete(); } workbooks = excel.getProperty("Workbooks").toDispatch(); workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method, new Object[]{excelFilePath, new Variant(false), new Variant(true)}, new int[1]).toDispatch(); //以只读方式打开 Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[]{htmlFilePath, new Variant(44)}, new int[1]); successful = true; }catch(Exception ex){ successful = false; ex.printStackTrace(); }finally{ excelDestory(); } return successful; } }
//设置字体 Dispatch font = Dispatch.get(selection, "Font").toDispatch(); Dispatch.put(font, "Size", "10"); Dispatch.put(font, "Name", new Variant("宋体"));
//设置段落格式 Dispatch align = Dispatch.get(selection, "ParagraphFormat").toDispatch(); Dispatch.put(align, "Alignment", "1"); //1:置中 2:靠右 3:靠左
//插入文本字符串 Dispatch.put(selection, "Text", "经理例会重点问题(" + DatetimeUtil.getToday("MMdd") + ")");
//回车换行 Dispatch.call(selection, "MoveDown"); Dispatch.call(selection, "TypeParagraph");
//重新设置文档内容的字体 selection = Dispatch.get(doc, "Content").toDispatch(); font = Dispatch.get(selection, "Font").toDispatch(); Dispatch.put(font, "Size", "10"); Dispatch.put(font, "Name", new Variant("宋体")); Dispatch.put(font, "Bold", new Variant(false));
发表评论
-
HttpClient容易忽视的细节——连接关闭
2012-03-02 09:15 621HttpClient client = new HttpCli ... -
HTTPClient的多线程编程
2012-03-02 09:09 1486Axis2的连接主要采用了HttpClient进行与服务器的服 ... -
HttpClient超时区别
2012-03-02 09:07 1075HttpClient 4 设置超时 httpclient 超时 ... -
HttpClient Theading
2012-03-01 10:49 679有技术兴趣的 请加28830308群. 这篇文章概括了怎样在 ... -
HttpClient使用
2012-03-01 10:43 727有技术兴趣的 请加28830308群. HttpClien ... -
线程请求执行,一个多线程程执行HTTP请求的例子。
2012-03-01 10:40 1764package cn.lake.util; import ... -
httpclient 4 下载 文件
2012-03-01 10:38 958import java.io.File; import ja ... -
使用了httpclient实现的上传商品的demo
2012-03-01 10:36 1159package com.taobao.top.sample.u ... -
socket简介
2012-02-07 10:58 687第一步 充分理解Socket ... -
转载socket
2012-02-07 10:57 577对TCP/IP、UDP、Socket编程这些词你不会很陌生吧? ... -
Java的synchronized关键字:同步机制总结
2012-02-07 10:54 578不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对 ... -
JAVA RMI
2012-02-07 10:53 579Java RMI 指的是远程方法调用 (Remote Meth ... -
JXL生成复杂的EXCEL
2011-12-26 13:52 1387public String ExcelTaskRepo ... -
如何快速的为现有数据库建立数据字典?
2011-12-20 13:55 998大部分项目在验收时都需要向客户提供一份详细的数据字典,而编写数 ... -
在java中获取客户端真实的IP地址
2011-12-20 13:55 556public static String getRemoteA ... -
用JavaMail的API发送邮件
2011-12-20 13:55 5351、MimeMessage的包装类 public c ... -
在项目中整合FreeMarker框架
2011-12-16 15:40 585FreeMarker是一个用Java编写的模板引擎,既可以 ... -
Commons FTP范例
2011-12-16 15:33 506public class FtpUtil { privat ... -
Java实现的图片生成器
2011-12-16 15:32 522一、本图片生成器具有以下功能特性: 1、可以设置图 ... -
长短信发送范例
2011-12-16 15:25 693一、关键代码: private synchronized v ...
相关推荐
### Jacob 学习笔记 #### 一、Jacob 概述 Jacob,即 Java COM Bridge,是一种用于连接 Java 应用程序与 COM 组件的技术。它允许开发者利用 Java 的跨平台特性,同时能够调用 Windows 平台上丰富的 COM 接口。这种...
总结,Jacob库为Java开发者提供了与Windows COM组件交互的能力,尽管存在性能和平台限制,但在许多场景下,它是连接Java与COM世界的重要工具。通过理解其工作原理,我们可以更好地利用这一资源,解决实际项目中的...
总结来说,Jacob是Java开发中一个强大的工具,它允许开发者充分利用Windows生态系统的丰富资源,而无需学习新的编程语言或技术。通过`jacob-1.19-x86.dll`和`jacob-1.19-x64.dll`,以及`jacob.jar`,开发者能够实现...
在实际开发中,Jacob提供了简单的API,使得Java程序员能够以相对较低的学习曲线来掌握COM编程。 **Jacob的安装与配置** 首先,需要下载Jacob的jar文件和对应的dll动态链接库。dll文件通常需要放在系统的PATH环境...
总结起来,jacob-1.18-x64.dll是Java与Windows COM组件通信的关键,通过Jacob库,Java开发者得以充分利用Windows平台的资源,实现更丰富的功能。尽管存在一定的性能挑战和学习曲线,但其带来的便利性和广泛的应用...
总结来说,这个压缩包提供了Jacob的1.17-M2版本,包含适用于不同体系结构的DLL文件以及相关文档,是Java开发者在Windows环境下利用COM组件进行开发的重要工具。了解和掌握Jacob的使用方法,可以帮助开发人员提高工作...
总结,Jacob-1.16-M1是Java开发者在Windows环境中利用COM组件的得力工具,它简化了Java与COM之间的交互,提高了开发效率。了解并熟练掌握Jacob的使用,对于提升Java应用的Windows兼容性和功能性具有重要意义。
总结起来,Jacob-1.18是一个强大的工具,使得Java开发者能够利用Windows的COM组件扩展其应用程序的功能,无需学习新的编程语言或技术。通过理解并正确使用jacob-1.18-x64.dll、jacob-1.18-x86.dll和jacob-1.18.jar,...
总结起来,Jacob是Java开发者与Windows COM世界沟通的重要桥梁。通过深入理解Jacob-1.18-M2中的内容,开发者可以有效地利用这一工具解决跨平台交互的问题,提升Java应用程序的功能和灵活性。在实际开发中,结合示例...
通过这个示例,我们可以学习到如何在Java代码中引入和使用Jacob,以及如何组织代码来调用COM接口。 在资源包jacob_1.11.zip中,包含了Jacob库的完整版本1.11。这个库不仅包含了Jacob的Java类库,还可能包含必要的...
总结,Jacob-1.18是一个强大的工具,能够让Java开发者充分利用Windows生态中的COM组件。通过理解它的核心功能、文件结构以及如何使用,你可以在Java项目中实现与Windows系统的深度集成。不过,需要注意的是,Jacob只...
Java调用ActiveX技术主要涉及的是Java与COM(Component Object Model)组件的交互,而Jacob库正是实现这一功能的关键工具。Jacob全称为"Java ...提供的文档和资源对于学习和使用Jacob进行实际开发具有很高的价值。
开发者可以通过阅读源码来学习和调试相关功能,工具在这里可能指的是Jacob库和相关的IDE,如Eclipse或IntelliJ IDEA,它们可以帮助开发者更方便地管理项目和调试代码。 总结起来,Java Jacob库为Java开发者提供了一...
总结来说,Jacob-1.19是一个强大的工具,为Java开发者打开了通往Windows COM世界的大门,让Java应用程序能够充分利用Windows系统的丰富功能。正确理解和使用Jacob,可以帮助开发者提升工作效率,解决特定环境下的...
总结,Jacob-1.14.3是一个强大的工具,让Java开发者能够充分利用Windows平台上的COM组件资源。无论是自动化办公任务、集成第三方软件,还是开发与Windows环境紧密交互的应用,Jacob都是一个值得信赖的选择。
在IT行业中,处理和操作Microsoft Word文档是一项常见的任务。在这个场景下,我们关注的是使用Jacob库来实现对Word文档的...通过深入学习和应用Jacob,开发者可以构建强大的Word文档自动化处理工具,适应各种业务需求。
《Jacob-1.19与Java的交互:深入理解DLL集成》 Jacob,全称Java-COM Bridge,是一个Java库,允许Java程序直接调用Windows ...通过学习和实践,开发者可以充分利用Jacob实现各种高级功能,提升Java应用的效率和灵活性。
总结一下,Jacob库为Java开发者提供了一种有效的方式来操作Microsoft Word,通过COM接口实现与Word的交互。这个“Jacob操作Word完整代码实例”是学习和实践这一技术的好材料,它涵盖了从打开文档、编辑内容到保存和...
总结,JACOB作为一个连接Java与COM的强大工具,为开发者提供了灵活的接口,使得在Java平台上操作Windows应用程序成为可能。通过深入学习其源码和实践应用,开发者可以更好地理解和利用这一技术,提升工作效率,解决...