最近看了java 操作word 的例子,网上的搜到的东西实在太少了,帮助文档还是vb的,不得已只能自己琢磨了 ,前两天刚实现定位word标签的功能!
起初是配置问题,dll文件和Jar文件好像不合拍,要不就是和系统不合拍,反正老是处一个异常怎么都无法运行,换了dll文件能通过了。
开始做例子,看的是java 操作jacob的例子,而我用了一个封装的jar文件(office_wrapper.jar),那个例子就显得繁琐、复杂了,封装的jar文件在使用起来就方便多了(这是才发现的,但是对java的认识还是太浅)。
不多说看代码:(以下是例子代码)
//把指定的值设置到指定的标签中去
Dispatch activeDocument=app.getProperty("ActiveDocument").toDispatch();
System.out.println("activedocument");
Dispatch bookMarks = app.call(activeDocument, "Bookmarks").toDispatch();
System.out.println("bookmarks");
boolean bookMarkExist1=Dispatch.call(bookMarks,"Exists",bookMarkKey).toBoolean();
if(bookMarkExist1==true){
System.out.println("exists bookmark!");
Dispatch rangeItem = Dispatch.call(bookMarks, "Item",bookMarkKey).
toDispatch();
System.out.println("range item!");
Dispatch range = Dispatch.call(rangeItem, "Range").toDispatch();
System.out.println("range !");
//取标签的值
String bookMarkValue=Dispatch.get(range,"Text").toString();
bookMarkValue="test";
if(bookMarkValue!=null){
Dispatch.put(range, "Text",
new Variant(bookMarkValue));
}
当使用老师给的那个封装jar包后就变得:
Bookmarks bookMarks =app.getActiveDocument().getBookmarks();
Boolean b = bookMarks.exists(bookMarkKey);
// java.lang.System.out.println(b);
// int num2 = bookMarks.getCount();
// java.lang.System.out.println(num2);
if (b){
bookMarks.item(new Variant(bookMarkKey)).getRange().setText("123");
}
方便多了。
看出来,在使用jar包后所有例子中dispatch.call方法中的参数都被成了调用关系,
都成了xxx.getxxx(); dispatch.put的方法貌似成了xx.setxx();
小弟的一点心得,希望对大家有用,java操作word这方面的确资料太少了,不知道为什么,希望大家还有什么其他的可以共享的可以给小弟说说,小弟期待大家的共享!