jacob中如何中如何实现书签内容的poi替换书签,在线

jacob读取书签_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
jacob读取书签
你可能喜欢豆丁微信公众号
君,已阅读到文档的结尾了呢~~
Jacob操作Word书签,jacob操作word,jacob word,jacob word转pdf,java jacob word,jacob word转html,jacob word删除表格线,jacob 打印word,jacob合并word,jacob读取word
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Jacob操作Word书签
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口JACOB调用WORD书签修改WORD文档,并生成html显示到页面中
时间: 09:49:00
&&&& 阅读:389
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&首先要下载JACOB
&下载地址:http://sourceforge.net/projects/jacob-project/
下载Jacob的发布包,里面应该包含一个jar包:jacob.jar(放在项目的classpath下)
两个dll文件:jacob-1.15-M4-x64.dll、jacob-1.15-M4-x86.dll
两个dll文件请根据系统架构属性选择其中一个
Tomcat服务器:放入Tomcat &~/bin 目录下
WebLogic服务器:放入 Oracle/Middleware/wlserver_10.3/server/bin
//系统路径
String path = request.getSession().getServletContext().getRealPath("");
//资源存放路径
String sourcePath = path + "/template/download/";
String wordFileName = chartStatic.WORDNAME+wordMap.get("year").toString()+".doc";
String wordFilePath = sourcePath+wordFileN
//初始文件地址
ActiveXComponent MsWordApp = null;
Dispatch document = null;
ComThread.startMainSTA();//启动一个主线程
ComThread.InitMTA(true);
MsWordApp = new ActiveXComponent("Word.Application");
Dispatch documents = MsWordApp.getProperty("Documents").toDispatch();
//打开文档
document = Dispatch.call(documents, "Open", wordFilePath).toDispatch();
//获取书签
Dispatch bookMarks = Dispatch.call(document, "Bookmarks").toDispatch();
Dispatch rangeItem = null;
Dispatch range = null;
装配数据到Word
//装配文字
setDispatch(chartStatic.SR_DATA_END,wordMap.get(chartStatic.SR_DATA_END).toString(),bookMarks);
//装配图片
setDispatchImages(chartStatic.SR_IMG_BAR,filenameBar,bookMarks);
两个封装方法
* 把数据放入对应的书签
* @param bookmarkName word 中的书签名
* @param bookmarkValue 把值插入此数千名中
* @param bookMarks 所有的书签名
private boolean setDispatch(String bookmarkName,String bookmarkValue,Dispatch bookMarks){
Dispatch rangeItem = null;
Dispatch range = null;
boolean bookMarkExist = Dispatch.call(bookMarks, "Exists", bookmarkName).getBoolean();
if(bookMarkExist){
//替换文字
rangeItem = Dispatch.call(bookMarks,
"Item", bookmarkName).toDispatch();
range = Dispatch.call(rangeItem, "Range")
.toDispatch();
//替换文字
Dispatch.put(range, "Text", new Variant(bookmarkValue));
return bookMarkE
* 把图片放入对应的书签中
* @param bookmarkName
word中的标签名
* @param picFileName
* @param bookMarks
所有标签名
private boolean setDispatchImages(String bookmarkName,String picFileName,Dispatch bookMarks){
Dispatch rangeItem = null;
Dispatch range = null;
boolean bookMarkExist = Dispatch.call(bookMarks, "Exists", bookmarkName).getBoolean();
if(bookMarkExist){
rangeItem = Dispatch.call(bookMarks,"Item", bookmarkName).toDispatch();
range = Dispatch.call(rangeItem, "Range").toDispatch();
//生成图片
       File imgfile = new File(System.getProperty("java.io.tmpdir"), picFileName);
       //替换图片
      
Dispatch picture = Dispatch.call(Dispatch.get(range,"InLineShapes").toDispatch(),"AddPicture", imgfile.getAbsolutePath()).toDispatch();
return bookMarkE
保存,关闭文件。
//保存,关闭文件
if (document != null) {
Dispatch.call(document, "Save");
Dispatch.call(document, "Close", new Variant(0));
if (MsWordApp != null) {
MsWordApp.invoke("Quit", new Variant[0]);
ComThread.Release();//释放
ComThread.quitMainSTA();//关闭
保存为Html
//保存为html
Dispatch.invoke(document,"SaveAs",Dispatch.Method,
new Object[]{htmlFile, new Variant(8)},//7为txt格式, 8保存为html格式
new int[1]);
效果图如下
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/yehshuai/p/3622598.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!豆丁微信公众号
君,已阅读到文档的结尾了呢~~
Jacob操作Word书签,jacob操作word,jacob word,jacob word转pdf,java jacob word,jacob word转html,jacob word删除表格线,jacob 打印word,jacob合并word,jacob读取word
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Jacob操作Word书签
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口不知道怎么努力的菜鸟2号
使用Jacob自动替换书签内容
jacob自动替换书签内容
通过java代码实现word中书签的替换
在Java项目开发过程中,需求涉及到了各种word文档内容自动替换变量,现在将实现方式整理如下:
一、了解Jacob
先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。这是一个开始于1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献。
下载地址:
二、Jacob安装
1、我们解开下载的jacob_1.9.zip,在文件夹中找到jacob.dll和jacob.jar两个文件
2、将压缩包解压后,Jacob.jar添加到Libraries中;
3、将Jacob.dll放至“WINDOWS\SYSTEM32”下面。
代码如下:
import java.util.ArrayL
import java.util.HashM
import java.util.L
import java.util.M
import com.jacob.activeX.ActiveXC
import com.jacob.com.D
import com.jacob.com.V
public class JacobTest {
public static void main(String[] args) {
ActiveXComponent app = new ActiveXComponent("Word.Application");
String inFile = "C://Users/Desktop/bookmark.doc";
String tpFile ="C://Users/Desktop/new_bookmark.doc";
boolean flag = true;
boolean visible=false;
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[]{inFile, new Variant(false)}, new int[1]).toDispatch();
Dispatch activeDocument=app.getProperty("ActiveDocument").toDispatch();
Dispatch bookMarks = app.call(doc, "Bookmarks").toDispatch();
int bCount = Dispatch.get(bookMarks, "Count").getInt();
for (int i = 1; i &= bC i++){
Map bookMark = new HashMap();
Dispatch items = Dispatch.call(bookMarks, "Item", i).toDispatch();
String bookMarkKey = String.valueOf(Dispatch.get(items, "Name").getString()).replaceAll("null", "");
Dispatch range = Dispatch.get(items, "Range").toDispatch();
String bookMarkValue = String.valueOf(Dispatch.get(range, "Text").getString()).replaceAll("null", "");
String MarkKey=bookMarkK
String MarkValue=bookMarkV
if( MarkKey.equals("xm"))
MarkValue ="张三";
if( MarkKey.equals("lxdh")){
MarkValue ="10086";
if( MarkKey.equals("****")){
MarkValue ="*****";
Dispatch.put(range, "Text", new Variant(MarkValue));
System.out.println(bookMarkValue);
System.out.println(MarkValue);
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {tpFile, new Variant(0)} , new int[1]);
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
flag = true;
catch (Exception e) {
e.printStackTrace();
app.invoke("Quit", new Variant[] {});
出现以下异常解决方式:异常原因为word文档版本较低(如:word 2003及其以下),将word转换为较高版本即可。
Exception in thread "main" com.jacob.com.ComFailException: Invoke of: Item
Source: Microsoft Word
Description: 集合所要求的成员不存在。
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:625)
at com.jacob.com.Dispatch.callN(Dispatch.java:453)
at com.jacob.com.Dispatch.call(Dispatch.java:541)
at ceshi.GW.table(GW.java:53)
at ceshi.GW.main(GW.java:89)
转换过程中出现以下异常:
分析原因:word中没有插入书签,导出时不能正确定位导致;
解决办法:查看word文件,插入书签定位;完美解决;
com.jacob.com.ComFailException: Invoke of: Item
Source: Microsoft Word
Description: 集合所要求的成员不存在。
在转换过程中出现异常:
com.jacob.com.ComFailException: Can’t get object clsid from progid
解决方法:
操作系统缺少办公软件,安装办公软件(WPS,Office)即可。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 jacob实现word转html 的文章

 

随机推荐