dsoFrame.ocx的使用

更新时间:2023-12-28 10:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

dsoFrame.ocx的使用 2007-11-23 15:20

1 在页面的后面加上如下一段话:

就可以互现如下示的一个控件界面

2 打开一个doc文件

- 打开本地C盘下的一个33.doc的文件

document.all.DSOFramer1.Open(\- 打开远程的word文件

document.all.DSOFramer1.Open(\http://localhost:8080/XxShhCtrl-getAttachmentById.pfv?fjxh=xxfbfj000562\,

\- 打开本地的excel文件

document.all.DSOFramer1.Open(\

3 保存文件到本地

document.all.DSOFramer1.Save(\

注意:这里的文件指的是把控件中展示的doc文件,以22.doc的名称保存到c盘。

4 保存文件的服务器 function fileUpload(){

//document.all.DSOFramer1.style.display=\alert('------'); //初始化Http引擎

document.all.DSOFramer1.HttpInit(); //增加Post变量

//document.all.DSOFramer1.HttpAddPostString(\;

document.all.DSOFramer1.HttpAddPostString(\//上传打开的文件

document.all.DSOFramer1.HttpAddPostCurrFile(\//执行上传动作

document.all.DSOFramer1.HttpPost(\http://192.168.0.55:8082/WordCtrl-test1.pfv\}

说明:其中userid相当于表单的name,可以通过这个名字,接收到后面的mrli值。而11.doc表示被上传的文件名字。

5 删除书签

function cleanMark(){ //删除书签

//document.all.DSOFramer1.SetFieldValue(\document.all.DSOFramer1.SetFieldValue(\}

6 循环打印(适用于人名章问题) function printStamp(){ insToTif(); //插入传真件 for(i=0;i<2;i++){

cleanMark(); //书签内容清除 if(i==0){

document.all.DSOFramer1.SetFieldValue(\张三\}else{

document.all.DSOFramer1.SetFieldValue(\李四\}

document.all.DSOFramer1.printout(); } }

function cleanMark(){ //删除书签

//document.all.DSOFramer1.SetFieldValue(\document.all.DSOFramer1.SetFieldValue(\}

7 插入传真件

function insToTif(){ //传真件问题

document.all.DSOFramer1.Open(\//document.all.DSOFramer1.SetFieldValue(\PG::\书签中插入图片

//document.all.DSOFramer1.InsertFile(\http://www.google.cn/intl/zh-CN/images/logo_cn.gif",8); //在当前光标处插入图片

document.all.DSOFramer1.InsertFile(\}

8 书签中插入内容

向名称为book1的书签中插入数据

document.all.DSOFramer1.SetFieldValue(\向书签book1中插入文字

function insToMark(){

document.all.DSOFramer1.SetFieldValue(\//新建书签book1,并向其中插入文字

//document.all.DSOFramer1.SetFieldValue(\http://localhost:8080/XxShhCtrl-getAttachmentById.pfv?fjxh=xxfbfj000562\::\插入远程图片

//document.all.DSOFramer1.SetFieldValue(\\书签中插入本地图片 }

9 书签中内容的换行 书签中加入 \\r 即可

var dd = \

document.all.DSOFramer1.SetFieldValue(\书签中插入文字

for(i=0;i<10;i++){

document.all.DSOFramer1.SetFieldValue(\}

如上语句的执行效果如图:

10.获取书签中的内容 function getBookMark(){

var docObj = document.all.DSOFramer1.ActiveDocument; //获取word对象 var value_bookmark = docObj .bookmarks(\获取书签“book1”中的内容

alert(value_bookmark); }

11.隐藏工具栏 //隐藏菜单

function hidBtn(){

var tt = document.all.DSOFramer1.ActiveDocument; tt.CommandBars(1).Visible=false; tt.CommandBars(2).Visible=false; tt.CommandBars(3).Visible=false; tt.CommandBars(4).Visible=false; tt.CommandBars(5).Visible=false; tt.CommandBars(6).Visible=false; tt.CommandBars(7).Visible=false;

}

如果让某一工具栏的某些按钮隐藏,可以用下面的方法

tt.CommandBars(1).Controls(1).Visible=false; //常用工具栏的第一个图标隐藏

tt.CommandBars(1).Controls(3).Visible=false; //常用工具栏的第二个图标隐藏

tt.CommandBars(1).Controls(1).Visible=false; //常用工具栏的第三个图标隐藏

12. 隐藏标题栏,菜单栏,工具栏

document.all.DSOFramer1.Toolbars = false; document.all.DSOFramer1.Menubar = false; document.all.DSOFramer1.Titlebar = false;

13 视图切换

设置文档显示模式HRESULT ShowView(long dwViewType, [out,retval] long * pbool);

dwViewType的可取值为: enum WdViewType {

wdNormalView = 1, wdOutlineView = 2, wdPrintView = 3, wdPrintPreview = 4,

wdMasterView = 5, //这个是大纲 wdWebView = 6 }; */

//如大纲模式

document.all.DSOFramer1.ShowView(5); ============================ Java 之Word操作 - Jacob 2007-07-03 11:01

jacob

Jacob也是基于用java调用dll的一个框架,不过是个开源的,在大名鼎鼎的Sourceforge 有一席之地。下载地址为

http://sourceforge.net/project/jacob-project ,可以从上面下载最新的依赖包和 dll 文件。我下载的是目前的最新版 jacob_1.13-M2 ,据传,老版本对office2003支持不是很好 :-)。下载解压后如图:

在AMD64和X86文件加中是对应不同系统的dll,对应windows,就把x86下面的dll拷贝到c:/Windows/system32下面即可。 --------------------------------------

把 doc 文件转换为 html 文件的小例子(参看网友文章而来) 主要代码和注释如下:

ActiveXComponent app = new ActiveXComponent(\//启动word

String docPath = \//word 文件的位置

String htmlPath = \// 目标文件的位置,就是把temp.doc转换为ssss.htm文件

app.setProperty(\//这里的false表示生成过程不显示word的打开过程,而如果是true,则在生成过程中会显示word打开

Object docs = app.getProperty(\

Object doc = Dispatch.invoke((Dispatch) docs, \Dispatch.Method, new Object[]{docPath, new Variant(false), new Variant(true)}, new int[1]).toDispatch(); // 打开word文件

Dispatch.invoke((Dispatch) doc, \Object[]{htmlPath, new Variant(8)}, new int[1]); //生成html文件 Variant f = new Variant(false);

Dispatch.call((Dispatch) doc, \

app.invoke(\//退出,一般放在finally中 这个我已经测试过了,挺好使的。呵呵。 --------------------------------------

使用JACO 取得书签处的值和向书签处插入变量值 模板文件如图:

下面是我测试的代码。 public void openWord() {

ActiveXComponent app = new ActiveXComponent(\ String inFile = \//word 文件的位置 String toFile = \

Dispatch docs = app.getProperty(\

Dispatch doc = Dispatch.invoke(docs, \Variant(false), new Variant(true)}, new int[1]).toDispatch(); //打开

word文件

Dispatch activeDocument=app.getProperty(\

Dispatch bookMarks = app.call(activeDocument, \//Bookmarks是一个关键字

String bookMarkKey=\//书签名称

Dispatch rangeItem = Dispatch.call(bookMarks, \// Item是关键字

Dispatch range = Dispatch.call(rangeItem, \//Range是关键字 String bookMarkValue=Dispatch.get(range,\//获取miji书签处的值 log.debug(\//输入 “miji”书签的值 String newMarkValue=\新标签值\

String bookMarkKey_new=\//书签名称

Dispatch rangeItem_new = Dispatch.call(bookMarks, \//

Item是关键字

Dispatch range_new = Dispatch.call(rangeItem_new, \//Range

是关键

Dispatch.put(range_new,\

Dispatch.invoke(doc, \int[1]);

Variant f = new Variant(false); Dispatch.call(doc,\ app.invoke(\ }

log.debug(\输出的内容如图示,通个图可以看到取得的

miji

名称书签的值。

再看看生成的ssss.doc文件,看看是否把字符串String newMarkValue=\新标签值\插入到了指定的位置,如图

最让人欣慰搜的是对中文支持很好。没有中文乱码现象。 jacob 文本内容的替换 下面先看看模板文件的截图 下面是详细的代码: public void openWord() {

ActiveXComponent app = new ActiveXComponent(\ String inFile = \//模板

word 文件的位置

String toFile = \ //输出的文件

Dispatch docs = app.getProperty(\

Dispatch doc = Dispatch.invoke(docs, \Variant(false), new Variant(true)}, new int[1]).toDispatch(); //打开

word文件

Dispatch selection = app.getProperty(\//得到一个组件 log.info(\

Dispatch find = Dispatch.call(selection, \//查找什么文本 String oldText = \ //需要替换的文本内容 String newText = \欢迎北京奥运\//新的内容 Dispatch.call(find, \ Dispatch.put(find, \

Dispatch.call(find, \ //这一处也是一个很值得注意的地方,如果把这一

句去掉或移至Dispatch.put(selection, \的下面,就不会执行替换功能,而是把oldText的内容插入到文档的开头部分。所以这句话应该是定位oldText位置的作用

Dispatch.put(selection, \ //文件保存

Dispatch.invoke(doc, \int[1]);

Variant f = new Variant(false); Dispatch.call(doc, \

app.invoke(\ //一般写在

finally结构体中

}

执行后的结果截图:

从截图可以看出文本“2007”被“2008-欢迎北京奥运会”替换掉了。

本文来源:https://www.bwwdw.com/article/whnx.html

Top