ImageVerifierCode 换一换
你正在下载:

jcob.docx

[预览]
格式:DOCX , 页数:33 ,大小:25.59KB ,
资源ID:6274530      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6274530.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(jcob.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

jcob.docx

1、jcobjava调用com组件操作word使用总结(jacob)java 2008-12-05 20:58:19 阅读599 评论0 字号:大中小 订阅 .java调用com组件操作word使用总结(jacob)简单描述 在此处输入简单摘要特别声明:使用java-com技术可以完成任何VBA可以完成的office文档操作;一、准备工作 先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。这是一个开始于1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自

2、己的贡献。 Jacob下载地址: 我在这里下载了Jacob1.14.3和jacob1.9的版本两个版本这里下载的是目前最新的Jacob1.14.3的Release版。 另外java操作word方式还有(个人认为通过jacob最好,自己可以扩展,网上除poi之外几乎全是java-com技术实现的): (1):Apache POI - Java API To Access Microsoft Format Files(http:/poi.apache.org/);对word处理不够强处理Excel功能可以,但是全是通过java完成的,不需 要com组件支持; (2):java2word 是一个在j

3、ava程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。(好象也是用的java-com技术); (3)web开发语言操作word的功能最好还是用第三方的控件, 看看这个SOAOFFICE,还可以使用js 写VBA呢 二、安装Jacob Jacob的安装非常的简单,我们解开下载的jacob_1.9.zip,在文件夹中找到jacob.dll和jacob.jar两个文件,如果是Jacob1.14.3则是jacob-1.14.3-x86.dll(32位,机和jacob-1.14.3-x64.dll(64位)和jac

4、ob.jar两个文件。Jacob.dll直接放到系统的system32文件夹下就行了,连注册都不用的(或者拷贝到jdk或者jre的bin目录下也行,当前测试文件所在的目录也行,就是只要在java.library.path中就可以)。而jacob.jar设置到classpath中去就可以了,或者在IDE开发环境的工程中设置扩展库也一样的,我是这样使用的将jacob-1.14.3-x86.dll或复制到%Tomcat5%bin目录下将jacob.jar复制到%Tomcot5%Sharelib目录下,我使用过程中感觉放到这里是一个最终解决办法,当你放哪都有问题的时候。我这样用之后再没有出过因为系统不

5、一样出现的各种各样的问题,当然你作的是web的项目。 注意使用jacob一写要安装word,我装的word2003,如果是操作word2007就不用jacob了(好像这方面的API)。对jacob.dll几种配置方法 (网上看到):2008-07-31 11:59:49 1、把jacob.dll文件,复制到 windowssystem32 目录下。(注:我用的时候这个方法不能运行)2、 把jacob.dll放入 Javajdk1.5.0_06jrebin目录下.把jacob.jar放入 Javajdk1.5.0_0jrelibext 目录下.可以正常运行。3、把jacob.dll放入 glcs

6、rc目录下.把jacob.jar放入WEB-INFlib目录下,也是可以正常运行。三、使用(以下是我改写的一个word操作类,希望有兴趣的朋友完善,记得发给我一份)/注意java操作word关键是定位操作对象;import com.jacob.activeX.ActiveXComponent;import .Dispatch;import .Variant;/* jacob操作MSword类* author */public class WordBean / word文档private Dispatch doc;/ word运行程序对象private ActiveXComponent word

7、;/ 所有word文档集合private Dispatch documents;/ 选定的范围或插入点private Dispatch selection;private boolean saveOnExit = true;public WordBean()throws Exceptionif (word = null) word = new ActiveXComponent(Word.Application);word.setProperty(Visible, new Variant(false); /不可见打开word word.setProperty(AutomationSecurity

8、, new Variant(3); /禁用宏if (documents = null)documents = word.getProperty(Documents).toDispatch();/* 设置退出时参数* * param saveOnExit* boolean true-退出时保存文件,false-退出时不保存文件*/public void setSaveOnExit(boolean saveOnExit) this.saveOnExit = saveOnExit;/* 创建一个新的word文档* */public void createNewDocument() doc = Dis

9、patch.call(documents, Add).toDispatch();selection = Dispatch.get(word, Selection).toDispatch();/* 打开一个已存在的文档* * param docPath*/public void openDocument(String docPath) closeDocument();doc = Dispatch.call(documents, Open, docPath).toDispatch();selection = Dispatch.get(word, Selection).toDispatch();/*

10、只读 打开一个保护文档,* param docPath-文件全名* param pwd-密码*/public void openDocumentOnlyRead(String docPath, String pwd)throws Exception closeDocument();/ doc = Dispatch.invoke(documents, Open, Dispatch.Method, / new ObjectdocPath, new Variant(false), new Variant(true), new Variant(true), pwd, / new int1).toDis

11、patch();/打开word文件 doc = Dispatch.callN(documents, Open, new ObjectdocPath, new Variant(false), new Variant(true), new Variant(true), pwd, , new Variant(false).toDispatch();selection = Dispatch.get(word, Selection).toDispatch();public void openDocument(String docPath, String pwd)throws Exception clos

12、eDocument(); doc = Dispatch.callN(documents, Open, new ObjectdocPath, new Variant(false), new Variant(false), new Variant(true), pwd).toDispatch();selection = Dispatch.get(word, Selection).toDispatch();/* 把选定的内容或插入点向上移动* * param pos* 移动的距离*/public void moveUp(int pos) if (selection = null)selection

13、= Dispatch.get(word, Selection).toDispatch();for (int i = 0; i pos; i+)Dispatch.call(selection, MoveUp);/* 把选定的内容或者插入点向下移动* * param pos* 移动的距离*/public void moveDown(int pos) if (selection = null)selection = Dispatch.get(word, Selection).toDispatch();for (int i = 0; i pos; i+)Dispatch.call(selection,

14、 MoveDown);/* 把选定的内容或者插入点向左移动* * param pos* 移动的距离*/public void moveLeft(int pos) if (selection = null)selection = Dispatch.get(word, Selection).toDispatch();for (int i = 0; i pos; i+) Dispatch.call(selection, MoveLeft);/* 把选定的内容或者插入点向右移动* * param pos* 移动的距离*/public void moveRight(int pos) if (select

15、ion = null)selection = Dispatch.get(word, Selection).toDispatch();for (int i = 0; i pos; i+)Dispatch.call(selection, MoveRight);/* 把插入点移动到文件首位置* */public void moveStart() if (selection = null)selection = Dispatch.get(word, Selection).toDispatch();Dispatch.call(selection, HomeKey, new Variant(6);/* 从

16、选定内容或插入点开始查找文本* * param toFindText* 要查找的文本* return boolean true-查找到并选中该文本,false-未查找到文本*/SuppressWarnings(static-access)public boolean find(String toFindText) if (toFindText = null | toFindText.equals()return false;/ 从selection所在位置开始查询Dispatch find = word.call(selection, Find).toDispatch();/ 设置要查找的内容

17、Dispatch.put(find, Text, toFindText);/ 向前查找Dispatch.put(find, Forward, True);/ 设置格式Dispatch.put(find, Format, True);/ 大小写匹配Dispatch.put(find, MatchCase, True);/ 全字匹配Dispatch.put(find, MatchWholeWord, True);/ 查找并选中return Dispatch.call(find, Execute).getBoolean();/* 把选定选定内容设定为替换文本* * param toFindText*

18、 查找字符串* param newText* 要替换的内容* return*/public boolean replaceText(String toFindText, String newText) if (!find(toFindText)return false;Dispatch.put(selection, Text, newText);return true;/* 全局替换文本* * param toFindText* 查找字符串* param newText* 要替换的内容*/public void replaceAllText(String toFindText, String

19、newText) while (find(toFindText) Dispatch.put(selection, Text, newText);Dispatch.call(selection, MoveRight);/* 在当前插入点插入字符串* * param newText* 要插入的新字符串*/public void insertText(String newText) Dispatch.put(selection, Text, newText);/* * param toFindText* 要查找的字符串* param imagePath* 图片路径* return*/public b

20、oolean replaceImage(String toFindText, String imagePath) if (!find(toFindText)return false;Dispatch.call(Dispatch.get(selection, InLineShapes).toDispatch(),AddPicture, imagePath);return true;/* 全局替换图片* * param toFindText* 查找字符串* param imagePath* 图片路径*/public void replaceAllImage(String toFindText, S

21、tring imagePath) while (find(toFindText) Dispatch.call(Dispatch.get(selection, InLineShapes).toDispatch(),AddPicture, imagePath);Dispatch.call(selection, MoveRight);/* 在当前插入点插入图片* * param imagePath* 图片路径*/public void insertImage(String imagePath) Dispatch.call(Dispatch.get(selection, InLineShapes).t

22、oDispatch(),AddPicture, imagePath);/* 合并单元格* * param tableIndex* param fstCellRowIdx* param fstCellColIdx* param secCellRowIdx* param secCellColIdx*/public void mergeCell(int tableIndex, int fstCellRowIdx, int fstCellColIdx,int secCellRowIdx, int secCellColIdx) / 所有表格Dispatch tables = Dispatch.get(d

23、oc, Tables).toDispatch();/ 要填充的表格Dispatch table = Dispatch.call(tables, Item, new Variant(tableIndex).toDispatch();Dispatch fstCell = Dispatch.call(table, Cell,new Variant(fstCellRowIdx), new Variant(fstCellColIdx).toDispatch();Dispatch secCell = Dispatch.call(table, Cell,new Variant(secCellRowIdx),

24、 new Variant(secCellColIdx).toDispatch();Dispatch.call(fstCell, Merge, secCell);/* 在指定的单元格里填写数据* * param tableIndex* param cellRowIdx* param cellColIdx* param txt*/public void putTxtToCell(int tableIndex, int cellRowIdx, int cellColIdx,String txt) / 所有表格Dispatch tables = Dispatch.get(doc, Tables).to

25、Dispatch();/ 要填充的表格Dispatch table = Dispatch.call(tables, Item, new Variant(tableIndex).toDispatch();Dispatch cell = Dispatch.call(table, Cell, new Variant(cellRowIdx),new Variant(cellColIdx).toDispatch();Dispatch.call(cell, Select);Dispatch.put(selection, Text, txt); /* 获得指定的单元格里数据* * param tableIn

26、dex* param cellRowIdx* param cellColIdx* return*/ public String getTxtFromCell(int tableIndex, int cellRowIdx, int cellColIdx) / 所有表格Dispatch tables = Dispatch.get(doc, Tables).toDispatch();/ 要填充的表格Dispatch table = Dispatch.call(tables, Item, new Variant(tableIndex).toDispatch();Dispatch cell = Disp

27、atch.call(table, Cell, new Variant(cellRowIdx),new Variant(cellColIdx).toDispatch();Dispatch.call(cell, Select); String ret = ; ret = Dispatch.get(selection, Text).toString();ret = ret.substring(0, ret.length()-1); /去掉最后的回车符;return ret;/* 在当前文档拷贝剪贴板数据* param pos*/public void pasteExcelSheet(String p

28、os) moveStart();if (this.find(pos) Dispatch textRange = Dispatch.get(selection, Range).toDispatch();Dispatch.call(textRange, Paste);/* 在当前文档指定的位置拷贝表格* * param pos* 当前文档指定的位置* param tableIndex* 被拷贝的表格在word文档中所处的位置*/public void copyTable(String pos, int tableIndex) / 所有表格Dispatch tables = Dispatch.get

29、(doc, Tables).toDispatch();/ 要填充的表格Dispatch table = Dispatch.call(tables, Item, new Variant(tableIndex).toDispatch();Dispatch range = Dispatch.get(table, Range).toDispatch();Dispatch.call(range, Copy);if (this.find(pos) Dispatch textRange = Dispatch.get(selection, Range).toDispatch();Dispatch.call(textRange, Paste);/* 在当前文档指定的位

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1