2024年3月5日发(作者:)
WEBOFFICE
研发部
开发文档
5.0.8.2
WebOffice 文档控件
开发文档
北京点聚信息技术有限公司
2008/05/08
北京点聚信息技术有限公司(以下简称“点聚”)尽最大努力使这篇文章中的内容完善且正确。点聚对于由这篇文档导致的任何形式的直接或间接损失不负有责任。这篇文章的内容会跟随产品的升级而有所变化。
WebOffice开发文档
标记
名称:
状态:
部门:
文档ID:
WebOffice开发文档
发布
研发部
WebOffice-01-001
更新记录
版本 时间 备注
6.0.3.0
2009-08 1. 增加了Is2007属性,判断当前版本是否Office2007。
2. 增加了lContinue属性,可以在Word、excel事件处理中终止该事件操作。
3. 增加了HideMenuAction方法,能够对Office2007菜单进行控制。
4. 修改了新建、打开文档闪的问题。现在直接打开,没有闪烁。
5. 修改了EXCEL打开无菜单项的BUG
6.0.2.0
2009-02 6. 增加了工具栏按钮事件
7. 扩展了GetDocumentObject接口导出PPT的
8. 增加SaveAsPDF方法,无须安装Adobe即可直接输出PDF
9. 增加IsModify属性,判断文档是否修改
10. 增加GetFileSize方法,判断文档的大小
11. 增加了Word中的事件捕获。
6.0.0.0
2008-10 1.增加了工具栏
2.增加了WPS的支持
3. 增加了上传文件的压缩和加密
mail: dianju@
2(44)
WebOffice开发文档
5.0.8.2
2008-05
1. 设置了对文档安全的控制
2. 清除了对Word模板的修改
5.0.8.0
2008-03 1.
支持自定义的菜单,并跟Javascript绑定
5.0.1.4
2007-10
1. 可以设置文档打开密码和可写密码,支持Word、Excel
2. 设置Word中的变量,可以更新关联的域
3. 扩展了这个接口,支持Http下的相对路径
软件开发协议
北京点聚信息技术有限公司(以下简称点聚)的所有产品,包括但不限于:开发工具包,磁盘,光盘,硬件设备和文档,以及未来的所有定单都受本协议的制约。如果您不愿接受这些条款,请在收到后的7天内将开发工具包寄回点聚,预付邮资和保险。我们会把货款退还给您,但要扣除运费和适当的手续费。
1. 许可使用
您可以将本软件合并、连接到您的计算机程序中,但其目的只是如开发指南中描述的那样保护该程序。您可以以存档为目的复制合理数量的拷贝。
2. 禁止使用
除在条款1中特别允许的之外,不得复制、反向工程、反汇编、反编译、修改、增加、改进软件、硬件和产品的其它部分。禁止对软件和产品的任何部分进行反向工程,或企图推导软件的源代码。禁止使用产品中的磁性或光学介质来传递、存储非本产品的原始程序或由点聚提供的产品升级的任何数据。禁止将软件放在服务器上传播。
3. 有限担保
点聚保证在自产品交给您之日起的12个月内,在正常的使用情况下,硬件和软件存储介质没有重大的工艺和材料上的缺陷。
4. 修理限度
当根据本协议提出索赔时,点聚唯一的责任就是根据点聚的选择,免费进行替换或维修。点聚对更换后的任何产品部件都享有所有权。
保修索赔单必须在担保期内写好,在发生故障14天内连同令人信服的证据交给点聚。当将产品返还给点聚或点聚的授权代理商时,须预付运费和保险。
除了在本协议中保证的担保之外,点聚不再提供特别的或隐含的担保,也不再对本协议中所描述的产品负责,包括它们的质量,性能和对某一特定目的的适应性。
5. 责任限度
mail: dianju@
3(44)
WebOffice开发文档
不管因为什么原因,不管是因合同中的规定还是由于刑事的原因,包括疏忽的原因,而使您及任何一方受到了损失,由我方产品所造成的损失或该产品是起诉的原因或与起诉有间接关系,点聚对您及任何一方所承担的全部责任不超出您购买该产品所支付的货款。在任何情况下,点聚对于由于您不履行责任所导致的损失,或对于数据、利润、储蓄或其它的后续的和偶然的损失,即使点聚被建议有这种损失的可能性,或您根据第3方的索赔而提出的任何索赔均不负责任。
6. 协议终止
当您不能遵守本协议所规定的条款时,将终止您的许可和本协议。但条款2, 3,4,5将继续有效。
7.针对WebOffice的特别条款
WebOffice为免费版本软件,可以使用于个人开发和商业用途中。点聚将提供有限的技术服务。
mail: dianju@
4(44)
WebOffice开发文档
目 录
一、工作原理 ............................................................................................................. 8
1.1
开发流程 ............................................................................................... 8
1.2
WEB页面调用控件: ................................................................................ 9
二、接口说明 ........................................................................................................... 10
2.1
接口 .................................................................................................... 10
2.1.1
AboutBox ......................................................................................................... 10
2.1.2
AcceptAllRevisions ..................................................................................... 10
2.1.3
AddMenu ........................................................................................................... 10
2.1.4
BookMarkOpt ................................................................................................... 11
2.1.5
CloseDoc ......................................................................................................... 11
2.1.6
ConvertToAip ................................................................................................. 11
2.1.7
CreateApp ....................................................................................................... 12
2.1.8
DelLocalFile ................................................................................................. 12
2.1.9
DownLoadFile ................................................................................................. 12
2.1.10
ExcProtectSharing ............................................................................... 13
2.1.11
ExcUnprotectSharing ........................................................................... 13
2.1.12
FtpConnect ............................................................................................. 13
2.1.13
FtpDisConnect ....................................................................................... 13
2.1.14
FtpGetFile ............................................................................................. 14
2.1.15
GetDocumentObject ............................................................................... 14
2.1.16
GetFieldValue ....................................................................................... 15
2.1.17
GetTempFilePath ................................................................................... 15
2.1.18
GetRevCount ........................................................................................... 16
2.1.19
GetRevInfo ............................................................................................. 16
2.1.20
GetFileSize ........................................................................................... 17
2.1.21
GetBookMarkCount ................................................................................. 17
2.1.22
GetBookMarkInfo ................................................................................... 17
2.1.23
HideMenuItem ......................................................................................... 18
2.1.24
HttpInit ................................................................................................. 18
2.1.25
HttpAddPostFile ................................................................................... 19
2.1.26
HttpAddPostBuffer ............................................................................... 19
2.1.27
HttpAddPostValue ................................................................................. 19
2.1.28
HttpAddPostString ............................................................................... 19
2.1.29
HttpAddPostCurrFile ........................................................................... 20
2.1.30
HttpAddPostCurrFile2 ......................................................................... 20
2.1.31
HttpPost ................................................................................................. 20
mail: dianju@
5(44)
WebOffice开发文档
2.1.32
InsertFile ............................................................................................. 21
2.1.33
IsOpened ................................................................................................. 21
2.1.34
IsSaved ................................................................................................... 22
2.1.35
InsertFile ............................................................................................. 22
2.1.36
LoadOriginalFile ................................................................................. 23
2.1.37
OpenFileDlg ........................................................................................... 24
2.1.38
ProtectDoc ............................................................................................. 24
2.1.39
PrintDoc ................................................................................................. 24
2.1.40
PutSaved ................................................................................................. 25
2.1.41
Save ......................................................................................................... 25
2.1.42
SaveTo ..................................................................................................... 25
2.1.43
SaveAs ..................................................................................................... 26
2.1.44
SaveAsPDF ............................................................................................... 26
2.1.45
SetFieldValue ....................................................................................... 27
2.1.46
SetTrackRevisions ............................................................................... 28
2.1.47
ShowRevisions ....................................................................................... 28
2.1.48
SetCurrUserName ................................................................................... 28
2.1.49
SetToolBarButton2 ............................................................................... 28
2.1.50
HideMenuAction ..................................................................................... 30
2.1.51
SetCurrTime ........................................................................................... 31
2.1.52
SetKeyCtrl ............................................................................................. 31
2.1.53
SetSecurity ........................................................................................... 32
2.1.54
ShowDialog ............................................................................................. 32
2.1.55
SetValue ................................................................................................. 33
2.1.56
SetDocVariable ..................................................................................... 33
2.1.57
UnProtectDoc(BSTR strPwd) ............................................................... 34
2.1.58
ZipFile ................................................................................................... 34
2.2
属性 .................................................................................................... 35
2.2.1
DocType ........................................................................................................... 35
2.2.2
Version ........................................................................................................... 35
2.2.3
AppVersion ..................................................................................................... 35
2.2.4
lEventRet ....................................................................................................... 35
2.2.5
IsModify ......................................................................................................... 36
2.2.6
ShowToolBar ................................................................................................... 36
2.2.7
OptionFlag ..................................................................................................... 36
2.2.8
Is2007 ............................................................................................................. 37
2.2.9
lContinue ....................................................................................................... 37
2.3
事件 .................................................................................................... 38
2.3.1
NotifyWordEvent ........................................................................................... 38
2.3.2
NotifyCtrlReady ........................................................................................... 38
2.3.3
NotifyToolBarClick ..................................................................................... 38
三、ASP例子说明 .................................................................................................... 40
mail: dianju@
6(44)
WebOffice开发文档
3.1
Access数据库结构 .............................................................................. 40
3.2
演示程序主要页面说明 ........................................................................ 40
3.3
开发必读 ............................................................................................. 40
四、FAQ ................................................................................................................... 41
4.1 如何把文件直接上传到服务器 .................................................................... 41
五、附录 .................................................................................................................. 42
5.1 WebOffice文件Http上传原理 ................................................................... 42
mail: dianju@
7(44)
WebOffice开发文档
一、工作原理
点聚WebOffice是基于客户端的ocx控件,它的功能是将Office文档(Word、Excel、WPS)嵌入到浏览器中,并调用Office中各种接口,完成文档编辑工作,然后使用控件的Http接口模拟表单提交,发送到数据处理页面(此文档举例为页,代码见演示文件),完成文档的存档工作。
1.1 开发流程
├ 装载控件
├ 触发初始化方法
├ 执行初始化方法,打开新文档或装载已经存在的文档
function WebOffice1_NotifyCtrlReady() {
iginalFile("„", "„");
├ 根据当前步骤,来决定是否进入修订状态,如果是修订状态,最好设置当前的用户名
function WebOffice1_NotifyCtrlReady() {
iginalFile("„", "„");
rUserName("张三");
ckRevisions(1);
}
}
├ 填写表单元素,编辑Office文档
├ 执行Http上传接口保存表单元素和Office文档
//保存文档之前,如果需要接受修订,需要调用
ckRevisions(4);
//通过Http接口上传
it();
dPostString("„", "„");
dPostCurrFile("„", "„");
st("„")
├ 获取表单数据和Office进行数据库操作,并返回操作是否正确。
├ 根据返回值进行相应操作。
mail: dianju@
8(44)
WebOffice开发文档
1.2 WEB页面调用控件:
主要参数说明:
id 控件在网页的别名,可以通过别名调用控件的方法、属性
width 控件的宽度,可以使用绝对大小,如width="100px"。
height 控件的高度
codebase 设置控件自动下载的路径,用户如果没有安装控件,系统会自动访问codebase的路径下载控件;“#Version”后的是控件的版本,如果用户当前的软件版本低于“#Version”后面的版本,系统也会自动下载最新的控件
注意: 如果控件的width 和height属性使用%表示,则要明确指明它所在的容器的大小,如把控件放到表格
mail: dianju@
9(44)
WebOffice开发文档
二、接口说明
2.1 接口
2.1.1
AboutBox
原 型: void AboutBox();
功 能:显示WebOffice版本信息
返回值:
示 例:
ice1. AboutBox();
2.1.2
AcceptAllRevisions
原 型: long AcceptAllRevisions();
功 能:接受当前文档所有修订
返回值:
0:接受修订成功
非零:接受修订失败
示 例:
AllRevisions();
2.1.3
AddMenu
原 形:AddMenu(LPCTSTR cMenuName, LPCTSTR cChildName, long iIndex, LPCTSTR
cBindJSFun)
功 能:(保留)
参 数:
返回值:
示 例:
mail: dianju@
10(44)
WebOffice开发文档
2.1.4
BookMarkOpt
原 型: long BookMarkOpt(BSTR strBookMarks,long lType);
功 能:获取文档书签列表(保留)
参 数:
返回值:
示 例:
2.1.5
CloseDoc
原 型: long CloseDoc(long blReqSaved);
功 能:关闭当前文档
参 数:
blReqSaved:
0:关闭文档,不保存当前修改。
1:关闭文档,保存当前修改。
2:如果文档已经被修改,显示保存文档对话框,否则直接关闭。
其它:关闭文档,保存当前修改。
返回值:
0: 失败
非零: 成功
示 例:
//关闭当前文档,不保存当前修改。
oc (0);
2.1.6
ConvertToAip
原 型: short ConvertToAip(short nAddOriFile,short nSupport)
功 能:把当前通过LoadOriginalFile打开的原始文件直接转化成AIP文件。
参 数:
nAddOriFile:是否装载原始文件。
0:不装载。
非0:装载原始文件。
nSupport:
是否以普通方式(即解析文档的书签)打开。0:不解析。非0:解析。
返回值:
0:转化失败
非零:转化成功
示 例:tToAip (1,1);
mail: dianju@
11(44)
WebOffice开发文档
2.1.7
CreateApp
原 型: short CreateApp(BSTR strAppName);
功 能:(保留)
参 数:
返回值:
示 例:
2.1.8
DelLocalFile
原 型: long DelLocalFile(BSTR strFilePathName);
功 能:删除本地文件
参 数:
strFilePathName:本地文件的绝对路径。
返回值:
0: 删除成功
非零: 删除失败
示 例:
alFile("c:");
2.1.9
DownLoadFile
原 型: short DownLoadFile(LPCTSTR strHttpFileURL, LPCTSTR
strLocalFilePath, LPCTSTR strTitle, LPCTSTR strFileType)
功 能:下载远程服务器文件,当设置OptionFlag |= 0x0080 会弹出文件下载进度条。
参 数:
strHttpFileURL:服务器文件路径。
strLocalFilePath:保存的本地文件路径,如为空则弹出文件保存对话框。
strTitle:文件保存对话框的默认文件名,仅当strLocalFilePath为空有效。
strFileType:默认文件类型,仅当strLocalFilePath为空有效。
返回值:
0: 成功
非零: 失败
示 例:
adFile("","c:","","");
mail: dianju@
12(44)
WebOffice开发文档
adFile("","","标题","doc");
2.1.10
ExcProtectSharing
原 型: long ExcProtectSharing(BSTR strPassword,BSTR strWriteResPassword,
short bReadOnlyRecommended,BSTR strSharingPassword);
功 能:(保留)
参 数:
返回值:
示 例:
2.1.11
ExcUnprotectSharing
原 型: long ExcUnprotectSharing(BSTR strSharingPassword);
功 能:(保留)
参 数:
返回值:
示 例:
2.1.12
FtpConnect
原 型: long FtpConnect(BSTR strURL, long lPort, BSTR strUser, BSTR
strPwd);
功 能:FTP相关(保留)
参 数:
返回值:
示 例:
2.1.13
FtpDisConnect
原 型: long FtpDisConnect();
功 能:FTP相关(保留)
参 数:
返回值:
示 例:
mail: dianju@
13(44)
WebOffice开发文档
2.1.14
FtpGetFile
原 型: long FtpGetFile(BSTR strRemoteFile, BSTR strLocalFile);
功 能:FTP相关(保留)
参 数:
返回值:
示 例:
2.1.15
GetDocumentObject
原 型: IDispatch* GetDocumentObject();
功 能:
获取文档对象的ActiveDocument对象,此接口非常重要,基本所有的VBA功能都可以通过这个接口来实现。
参 数:
返回值: ActiveDocument对象的Dispatch
示 例:
/*
以下的JavaScript为采用ActiveDocument的方式直接操作VBA,向DOC文档的书签中加入一个图片。
function AddPicture(strMarkName,strBmpPath,vType)
在书签位置插入图片,
strMarkName 书签的名称
strBmpPath 图片的路径
vType 插入后的图片的样式,5为浮动在文字上面
AddPicture("test1","d:",5);
AddPicture("test1","d:",128);
*/
function AddPicture(strMarkName,strBmpPath,vType)
{
//定义一个对象,用来存储ActiveDocument对象
var obj;
obj = new Object(umentObject());
if(obj !=null){
var pBookMarks;
// VAB接口获取书签集合
pBookMarks = rks;
var pBookM;
mail: dianju@
14(44)
WebOffice开发文档
// VAB接口获取书签strMarkName
pBookM = pBookMarks(strMarkName);
var pRange;
// VAB接口获取书签strMarkName的Range对象
pRange = ;
var pRangeInlines;
// VAB接口获取书签strMarkName的Range对象的InlineShapes对象
pRangeInlines = Shapes;
var pRangeInline;
// VAB接口通过InlineShapes对象向文档中插入图片
pRangeInline = ture(strBmpPath);
//设置图片的样式,5为浮动在文字上面
tToShape(). = vType;
delete obj;
}
}
2.1.16
GetFieldValue
原 型: BSTR GetFieldValue(BSTR strFieldName, BSTR strSheetName);
功 能:获得书签位置的数值
参 数:
strFieldName:书签的名字
strSheetName:预留字段(值为空)
返回值: 返回书签的值
示 例:
//获得书签的值
var strFieldValue=ldValue("mark_1","")
2.1.17
GetTempFilePath
原 型: BSTR GetTempFilePath();
功 能:获得临时文件路径
参 数:
返回值: 当前文件的临时路径
示 例:
var strTempPath=pFilePath ();
mail: dianju@
15(44)
WebOffice开发文档
2.1.18
GetRevCount
原 型: long GetRevCount();
功 能:获取修订节点的个数
参 数:
返回值: 获取修订节点的个数
示 例:
2.1.19
GetRevInfo
原 型: BSTR GetRevInfo(long lIndex, long lType);
功 能:获取修订节点的信息(修订人,修订的时间,修订的动作)
参 数:
lIndex: 修订的节点编号
lType: 获取的信息编号
返回值:
示 例:
//1.获取修订的用户
vUserName = Info(i,0);
//2.获取修订的时间
vDate = new String(Info(i,1));
//3.获取修订的动作
var vRet = Info(i,2);
vRet == "1":表示"插入"的操作
vRet == "2":表示"删除"的操作
//4.获取修订的内容
vUserName = Info(i,3);
//总体的例子代码
var vCount;
vCount = Count();
var vOpt = 0;
var vDate;
for(var i=1; i<= vCount; i++){
vOpt = Info(i,2);
if("1" == vOpt){
vOpt = "插入";
}else if("2" == vOpt){
vOpt = "删除";
mail: dianju@
16(44)
WebOffice开发文档
}else{
vOpt = "未知操作";
}
vDate = new String(Info(i,1));
vDate = parseFloat(vDate);
dateObj = new Date(vDate);
alert(r() + "年" + th() + 1 + "月" +
e() +"日" + rs() +"时" + utes() +"分" + onds() +"秒" );
alert("用户:"+Info(i,0) + "rn操作:" +
vOpt + "rn内容:" + Info(i,3));
}
2.1.20
GetFileSize
原 型: long GetFileSize (LPCTSTR strFilePath);
功 能:获取本地文件的大小
参 数:
返回值:
示 例:
var vLen = eSize("c:");
2.1.21
GetBookMarkCount
原 型: long GetBookMarkCount();
功 能:获取文档中书签的总数量
参 数:
返回值:
示 例:
GetFileSize
2.1.22
GetBookMarkInfo
原 型: BSTR GetBookMarkInfo(long lIndex, long lType);
功 能:获取各书签的信息(名称和变量)
参 数:
返回值:
示 例:
var vBKCount;
vBKCount = kMarkCount();
var iIndex;
mail: dianju@
17(44)
WebOffice开发文档
var vName;
var vValue;
var vShowInfo;
vShowInfo = "";
for(iIndex = 1; iIndex <= vBKCount; iIndex++){
vName = kMarkInfo(iIndex,0 );
vValue = kMarkInfo(iIndex,1 );
vShowInfo += "BK"+iIndex+":"+vName+"="+vValue+"
";
vName = "";
vValue = "";
}
alert(vShowInfo);
//演示的例子:/weboffice-demo/
2.1.23
HideMenuItem
原 型: long HideMenuItem(long lMenuType);
功 能:控制自有工具栏的显示
参 数:
lMenuType工具栏开关,采用32位的数字作为开关,当相关位为1的时候,按钮显示,为0是按钮隐藏。
enum{
vNew = 0x01, //新建
vOpen = 0x02, //打开
vSaveAs = 0x04, //保存
vPrint = 0x10, //打印
vPrintView = 0x20, //打印预览
vReturn = 0x1000, //全屏
vFullScrean = 0x2000 //返回
};
返回值:
示 例:
//只显示新建和全屏按钮
nuItem(0x01 + 0x1000);
2.1.24
HttpInit
原 型: long HttpInit();
功 能:初始化上传接口
参 数:
返回值:
18(44) mail: dianju@
WebOffice开发文档
示 例:
//上传前必须执行此方法
it();
2.1.25
HttpAddPostFile
原 型: long HttpAddPostFile(BSTR strName, BSTR strFile);
功 能:Http上传相关(保留)
参 数:
返回值:
示 例:
//上传本地文件c:
dPostFile("111", "c:")
2.1.26
HttpAddPostBuffer
原 型: long HttpAddPostBuffer(BSTR strName, BSTR strRelateFile, BSTR
pbBuffer, long lLen);
功 能:Http上传相关(保留)
参 数:
返回值:
示 例:
2.1.27
HttpAddPostValue
原 型: long HttpAddPostValue(BSTR strName, long lValue);
功 能:Http上传相关(保留)
参 数:
返回值:
示 例:
2.1.28
HttpAddPostString
原 型: long HttpAddPostString(BSTR strName, BSTR strValue);
功 能:添加要上传的表单域
参 数:
strName:表单域的名称
mail: dianju@
19(44)
WebOffice开发文档
strValue:表单域的值
返回值:
示 例:
//添加表单域,可多次执行此方法
dPostString("DocTitle",
);
2.1.29
HttpAddPostCurrFile
原 型: long HttpAddPostCurrFile(String field, String newFileName);
功 能:添加要上传的Word或者Excel文件
参 数:
Field:要上传文件的id
newFielName:上传后的新文件名。该参数可以为空,系统将自动为文件命名
返回值:
示 例:
dPostCurrFile("DocContent","");
2.1.30
HttpAddPostCurrFile2
原 型: long HttpAddPostCurrFile2(BSTR strName)
功 能:(保留)
参 数:
返回值:
示 例:
2.1.31
HttpPost
原 型: BSTR HttpPost(BSTR strHttpURL);
功 能:将当前表单和文件数据提交到指定URL路径
参 数:
strHttpURL: 处理表单和文件数据的文件URL路径
返回值:
Succeed:上传成功
mail: dianju@
20(44)
WebOffice开发文档
failed: 上传失败
示 例:
//相对路径
var returnValue=st("../");
//绝对路径
var
returnValue=st("127.0.0.1/")
2.1.32
InsertFile
原 形:short InsertFile(LPCTSTR strFilePathName, short nCurPos)
功 能:插入合并文件,和插入图片。
参 数:strFilePathName:
文件或者图片的路径,可以是Http.或者Ftp路径
nCurPos:
位置和图片控制符。nCurPos 或者nCurPos -8
0: 当前位置
1:
文件开头
2:
文件末尾
如果第四位为1:表示插入的是图片
返回值:
0:正确
其他:错误
示 例:
//文件头部
File("/",1);
//文件尾部
File("/",2);
//当前光标位置
File("/",0);
//文件头部
File("/",9);
//文件尾部
File("/",10);
//当前光标位置
File("/",8);
2.1.33
IsOpened
原 型: long IsOpened();
mail: dianju@
21(44)
WebOffice开发文档
功 能:判断当前是否打开文件
参 数:
返回值:
0:表示当前未打开文档
非0:表示已经打开文档
FILE_TYPE_WORD = 11,
FILE_TYPE_WORD = 11,
FILE_TYPE_EXCEL = 12,
FILE_TYPE_PPT = 13,
FILE_TYPE_RTF = 14,
FILE_TYPE_WPS = 21,
FILE_TYPE_PDF = 31,
FILE_TYPE_UNK = 127
示 例:
var isOpened=ed();
2.1.34
IsSaved
原 型: long IsSaved();
功 能:判断文件是否被修改
参 数:
返回值:
0:文件已被修改
非零:文件未被修改
示 例:
var isSaved=d();
2.1.35
InsertFile
原 型: long InsertFile(BSTR strFilePathName, short nCurPos);
功 能:插入、合并文件或插入图片
参 数:
strFilePathName:文件或者图片的路径,可以是Http.或者Ftp路径
nCurPos:位置和图片控制符。nCurPos 或者nCurPos -8
0: 当前位置
1:
文件开头
2:
文件末尾
如果第四位为1:表示插入的是图片
返回值:
0:插入成功
mail: dianju@
22(44)
WebOffice开发文档
非0:插入失败
示 例:
//文件头部
File("/",1);
//文件尾部
File("/",2);
//当前光标位置
File("/",0);
//文件头部
File("/",9);
//文件尾部
File("/",10);
//当前光标位置
File("/",8);
2.1.36
LoadOriginalFile
原 型: long LoadOriginalFile(BSTR pcFileNameOrUrl, BSTR pcType);
功 能:新建、装载Office文档
参 数:
pcFileNameOrUrl:
要装载文件的本地路径或者URL,值为空表示新建文档,如果是在Http的Web环境下,可以传相对路径.
pcType:
doc:打开、新建Word文件
xls:打开、新建Excel文件
ppt:打开、新建PPT 文件
wps:打开、新建WPS 文件
返回值:
0:失败
非0:成功
示 例:
// 通过URL打开一个服务器文件,代码见演示文件
iginalFile("127.0.0.1/?id=8", "doc");
// 通过URL打开一个服务器文件,相对路径
iginalFile("/?id=8", "doc");
iginalFile("./?id=8", "doc");
// 新建Excel
iginalFile("", "xls");
mail: dianju@
23(44)
WebOffice开发文档
// 通过Word打开本地文件
iginalFile("C:", "doc");
2.1.37
OpenFileDlg
原 型: short OpenFileDlg();
功 能:打开本地文件显示在WebOffice中
参 数:pcFileNameOrUrl:保存的文件路径
返回值:
示 例:
//打开对话框
leDlg();
2.1.38
ProtectDoc
原 型: long ProtectDoc(long lProOrUn, long lType, BSTR strPWD);
功 能:文档保护
参 数:
lProOrUn:
└ 1:为保护文档
└ 0:为解锁文档
lType :
└ 0 :文档保护,只允许修订
└ 1 :文档保护,只允许批注
└ 2 :文档完全保护,不允许任何操作
strPWD:文档保护、解锁时所需设置的密码
返回值:
示 例:
// 保护文档,只允许修订
tDoc(1, 0, "12345");
// 解锁文档
tDoc(0, 0, "12345");
2.1.39
PrintDoc
原 型: long PrintDoc(long blShowDlg);
功 能:打印当前文档
参 数:blShowDlg:
0:不显示打印对话框,直接打印
mail: dianju@
24(44)
WebOffice开发文档
非零:显示打印对话框
返回值:
0:打印失败
非零:打印成功
示 例:
//显示打印对话框
oc(1);
2.1.40
PutSaved
原 型: long PutSaved(boolean bSaved);
功 能:设置当前文档的修改状态
参 数:
0: 处于修改状态
1: 处于保存状态
返回值:
示 例:
//设置当前文档处于修改状态
ed(0);
2.1.41
Save
原 型: long Save();
功 能:
将文件保存原来位置,第一次保存时弹出对话框
参 数:
返回值:
0:保存失败
非零:保存成功
示 例:
();
2.1.42
SaveTo
原 型: long SaveTo(BSTR pcFileNameOrUrl);
功 能:将文件另存为至其它位置
参 数:
pcFileNameOrUrl:保存的文件路径
返回值:
0:保存失败
非零:保存成功
mail: dianju@
25(44)
WebOffice开发文档
示 例:
//将文件另存为
(“c:”);
2.1.43
SaveAs
原 型: long SaveAs(BSTR strFileName, long dwFileFormat);
功 能:保存文件到本地
参 数:
strFileName: 要保存的文件路径和文件名
dwFileFormat:保存的文件类型
└ 0 Word类型
└ 2 Txt文件
└ 6 Rtf文件
└ -4143 Excel类型
返回值:
示 例:
("C:", 0); // 另存为Word文件
("C:", 2); // 另存为Txt文件
("C:", 6); // 另存为Rtf文件
("C:", -4143); // 另存为Excel文件
2.1.44
SaveAsPDF
原 型: long SaveAsPDF(LPCTSTR strOriFilePath, LPCTSTR strSaveFilePath,
long lType)
功 能:保存文件为PDF格式,本地不需要安装Adobe软件。需要下载PDF支持模块。
参 数:
strOriFilePath: 本地文件路径,如果为空,则表示为当前打开的文件
strSaveFilePath:保存的PDF文件格式,如果需要把此文件上传到服务器,请参照 HttpAddPostFile接口
lType:保留参数,传0即可。
返回值:
0:成功
其他:失败
示 例:
PDF("C:","C:", 0);
mail: dianju@
26(44)
WebOffice开发文档
PDF("","C:", 0);
2.1.45
SetFieldValue
原 型: long SetFieldValue(BSTR strFieldName, BSTR strValue, BSTR
strSheetName);
功 能:添加书签,套红头模板
参 数:strFieldName:书签的名字,对于Excel文件,此数据位单元格
strValue:书签的值,该处可以是个用于返回数据的URL,用于套红头模板。对于Excel文件,如果插入的是图片,此数值为::JPG::+图片的路径
strSheetName:命令的类型,对于Excel文件此数值为Sheet的名称
└ ::ADDMARK:: 添加书签
└ ::DELMARK:: 删除书签
└ ::JPG:: 添加图片,可以利用这个来实现图片电子印章
└ ::FILE:: 调用本地或者URL的文件设置书签值(套红头)
返回值:
示 例:
// 添加书签mark_1,并为它赋值
ldValue("mark_1", "北京点聚",
"::ADDMARK::");
// 为已存在的书签mark_1赋值
ldValue("mark_1", "电子签章", "");
// 套本地红头
ldValue("mark_1", "c:",
"::FILE::");
// 套服务端红头1,页用于返回要装载Word的二进制值,代码见演示文件
ldValue("mark_1",
"127.0.0.1/?id=8", "::FILE::");
// 套服务端红头2
ldValue("mark_1","127.0.0.1/", "::FILE::");
//添加图片电子印章
ldValue("mark_1","127.0.0.1/", "::JPG::");
//在Excel中添加图片
ldValue("","::JPG::/intl/zh-CN/images/logo_","");
mail: dianju@
27(44)
WebOffice开发文档
2.1.46
SetTrackRevisions
原 型: long SetTrackRevisions(long lValue);
功 能:修订文档
参 数:
lValue:文档修订状态
└ 1: 开始修订文档
└ 0: 进入非留痕状态
└ 4:接受当前修订
返回值:
示 例:
// 开始修订
ckRevisions(1);
// 接受修订
ckRevisions(4);
2.1.47
ShowRevisions
原 型: long ShowRevisions(long nNewValue);
功 能:显示、隐藏修订
参 数:
nNewValue:要保存的文件路径和文件名
└ 1:显示修订
└ 0:隐藏修订
返回值:
示例:
visions(0); // 隐藏修订
2.1.48
SetCurrUserName
原 型: long SetCurrUserName(BSTR strCurrUserName);
功 能:设置当前编辑Word、Excel的用户名,主要用于修订文档,标识不同人进行的不同操作
参 数:strCurrUserName:当前编辑人的用户名
返回值:
示 例:rUserName("张三");
2.1.49
SetToolBarButton2
原 型: short SetToolBarButton2(VARIANT lIndex, VARIANT lID, VARIANT
lControl);
mail: dianju@
28(44)
WebOffice开发文档
功 能:
设置所有菜单项或者菜单项按钮的隐藏和现实
参 数:
lIndex:要显示隐藏的元素名称。根据Word/Excel 的不同版本,可能有部分不同
└ Standard:常用工具条
└ Formatting:格式化工具条
└ Menu Bar:菜单栏
当lIndex为0的时候,lID代表的是按钮的ID数值,关于各按钮的ID值,请参照附件。
lID:要操作的菜单元素的位置
lControl:按钮状态控制,按位控制,如该值为1时,它的二进制为0001,表示该菜单元素是显示但不可用
第一位为:是否显示。0:隐藏;1:显示
第二位为:是否可用。0:不可用;1:可用。
第三位为:工具栏和菜单栏是否恢复到默认状态。0:不恢复;1:恢复。
第四位为:是否隐藏整个菜单栏或工具栏,1为隐藏,0为显示
返回值:
示 例:
// 常用工具栏上的新建按钮 显示但不可用
. lBarButton2("Standard",1,1);
// 常用工具栏上的打开按钮 隐藏。
. lBarButton2("Standard",2,0);
// 恢复常用工具栏为初始状态
. lBarButton2("Standard",1,4);
// 格式工具栏上的格式按钮 显示但不可用
. lBarButton2("Formatting",1,1);
// 恢复格式工具栏为初始状态
. lBarButton2("Formatting",1,4);
// 菜单栏文件选项,显示但不可用。
lBarButton2("Menu Bar",1,1);
// 菜单栏文件选项,显示但不可用。
lBarButton2("Menu Bar",1,1);
// 隐藏整个菜单栏(如果需要隐藏之后再显示,请设置第三个参数为11)
lBarButton2("Menu Bar",1,8);
// 隐藏整个格式工具栏(如果需要隐藏之后再显示,请设置第三个参数为11)
lBarButton2("Formatting",1,8);
// 隐藏整个常用工具栏(如果需要隐藏之后再显示,请设置第三个参数为11)
lBarButton2("Standard",1,8);
mail: dianju@
29(44)
WebOffice开发文档
2.1.50
HideMenuAction
原 型: long HideMenuAction(short shMenuMode, long lValue);
功 能:设置菜单的隐藏和显示。支持Office2007的菜单隐藏和显示
参 数:(仅适用于Office2007)
shMenuMode:设置模式:具体值及含义如下:
0:Office2003以下,直接关闭菜单,暂未支持。可使用SetToolBarButton2接口控制
1:Office2007以上,需要设置关闭菜单列表
2:扩展值,暂无含义
3:扩展值,暂无含义
4:扩展值,暂无含义
5:设置关闭菜单列表后,需调用此值激活。并第二个参数设置为0,具体见示例。
6:恢复菜单显示及功能使用,第二个参数设置为0
lValue:设置要隐藏的菜单及禁止复制、粘贴功能
0x1000:十进制为4096--粘贴无效
0x2000:十进制为8192—复制无效
0x100000:十进制为1048576—开始菜单
0x200000:十进制为2097152—插入菜单
0x400000:十进制为4194304—页面布局菜单
0x800000:十进制为8388608—引用菜单
0x1000000:十进制为16777216—邮件菜单
0x2000000:十进制为33554432—审阅菜单
0x4000000:十进制为67108864—视图菜单
0x8000000:十进制为134217728—开发工具菜单
0x10000000:十进制为268435456—加载项菜单
返回值:
示 例:
//设置粘贴无效
ice1. HideMenuAction(1,4096);//设置动作
ice1. HideMenuAction(5,0);//激活设置
//设置复制无效
ice1. HideMenuAction(1,4096);
ice1. HideMenuAction(5,0);
//设置开始菜单隐藏
ice1. HideMenuAction(1,1048576);
ice1. HideMenuAction(5,0);
//设置多菜单隐藏(比如隐藏开始、插入、页面布局菜单)
ice1. HideMenuAction(1,1048576+2097152+4194304);
mail: dianju@
30(44)
WebOffice开发文档
ice1. HideMenuAction(5,0);
//恢复至设置之前状态(即正常状态)
ice1. HideMenuAction(6,0);
2.1.51
SetCurrTime
原 型: short SetCurrTime(BSTR dateAndTime);
功 能:设置客户端的修订时间,防止客户端和服务端的时间误差
参 数:
dateAndTime:参数的形式必须为 yyyy-mm-dd hh-mm-ss的形式
返回值:
示 例:
rTime("2006-02-07 11:11:11");
2.1.52
SetKeyCtrl
原 型: long SetKeyCtrl(long lCtrl, long lChar, long lType);
功 能:屏蔽、运行Office的快捷键
参 数:
lCtrl:要屏蔽、运行的快捷键的值。
Ctrl=512 Shift=256 Alt=1024
例:Ctrl + S = 512 + 83 (大写S的ASCII码值) = 595
例:Ctrl + O = 512 + 79 = 591
例:Ctrl + Shift + E = 512 + 256 + 69 = 837
注意:字母使用大写的ASCII码值
lChar:控制类型
└ -1:屏蔽快捷键
└ 1:执行快捷键命令
└ 0:恢复快捷键
└ lTyp:扩展接口,目前暂设为0
返回值:
示 例:
//屏蔽Ctrl + S
Ctrl(595,-1,0)
//屏蔽Ctrl + O
Ctrl(591,-1,0)
mail: dianju@
31(44)
WebOffice开发文档
2.1.53
SetSecurity
原 型: long SetSecurity(long lFlag)
功 能:
设置文档安全选项
参 数:
lFlag:按位标记的控制开关。
0x01表示不允许打印(当第一位为1时有效)
0x02表示不允许保存(当第二位为1时有效)
0x04表示不允许复制(当第三位为1时有效)
0x08表示不允许拖动(当第四位为1时有效)
0x8000表示清除开关(当最高位为1时有效)
返回值:
示 例:
//禁止打印
urity(0x01);
//恢复允许打印
urity(0x01 + 0x8000);
//禁止保存
urity(0x02);
//恢复允许保存
urity(0x02 + 0x8000);
//禁止复制
urity(0x04);
//恢复允许复制
urity(0x04 + 0x8000);
//禁止打印、保存、复制
urity(0x01+0x02+0x04);
//恢复允许打印、保存、复制
urity(0x01+0x02+0x04+0x8000);
2.1.54
ShowDialog
原 型: long ShowDialog(long dwIndex);
功 能:
显示对话框
参 数:
dwIndex:对话框的ID数值,详细的数值列表请参照附件。
返回值:
示 例:
mail: dianju@
32(44)
WebOffice开发文档
2.1.55
SetValue
原 形:short SetValue(LPCTSTR strValue, LPCTSTR strName)
功 能:设置Word、Excel文档基本信息,目前仅支持 只读和可写密码
参 数:strValue:设置的基本信息的数值
strName:基本信息的标识,如只读密码的标识为"::DOCPROP:PassWord"可改密码的标识为"::DOCPROP:WritePW"
返回值:
0:正确设置
-1:不支持此命令,请确定您的第二个参数为正确。
示 例:
//设置当前文档的打开密码为”password”
ue("password","::DOCPROP:PassWord");
//设置当前文档的可写密码为”password”
ue("password","::DOCPROP: WritePW");
2.1.56
SetDocVariable
原 形:short SetDocVariable(LPCTSTR strVarName, LPCTSTR strValue, long
lOpt)
功 能:设置Word中的变量的值,更可以更新与此变量相关联的域。
参 数:strVarName
变量名称
strValue
变量设置的数值
lOpt
一个按位操作的数字位, 第一位为1: 表示update域关联的
第二位为1: 表示如果没有这个变量则添加
返回值:
1:正确设置
0:错误
示 例:
//设置变量 DocName的值为"文档名称",如不存在DocName的变量则返回
Variable("DocName","文档名称",0);
//设置变量 DocName的值为"文档名称",如不存在DocName的变量则添加
mail: dianju@
33(44)
WebOffice开发文档
Variable("DocName","文档名称",2);
//设置变量 DocName的值为"文档名称",并更新DocName所关联的域
Variable("DocName","文档名称",1);
2.1.57
UnProtectDoc(BSTR strPwd)
原 型: long UnProtectDoc(BSTR strPwd);
功 能:解除当前文档保护
参 数:strPwd 文档保护时所设置的密码
返回值:
0:解锁成功
非零:解锁失败
示 例:
ectDoc("12345");
2.1.58
ZipFile
原 型: short ZipFile(BSTR cSourceFile, BSTR cAimFile,long wFileType,long
bEnc);
功 能: 压缩文档(保留)
参 数:
返回值:
示 例:
mail: dianju@
34(44)
WebOffice开发文档
2.2 属性
2.2.1
DocType
原 型: long DocType;
说 明:文件类型,只读
数 值:
FILE_TYPE_WORD = 11,
FILE_TYPE_WORD = 11,
FILE_TYPE_EXCEL = 12,
FILE_TYPE_PPT = 13,
FILE_TYPE_RTF = 14,
FILE_TYPE_WPS = 21,
FILE_TYPE_PDF = 31,
FILE_TYPE_UNK = 127
2.2.2
Version
原 型: BSTR Version;
说 明:打开文件的版本号,只读
数 值:
2.2.3
AppVersion
原 型: BSTR Version;
说 明:打开文件的版本号,只读
数 值:
2.2.4
lEventRet
原 型: BOOL LEventRet;
说 明:见事件 NotifyToolBarClick事件
数 值:
mail: dianju@
35(44)
WebOffice开发文档
2.2.5
IsModify
原 型: BOOL IsModify;
说 明:判断文档是否被修改,需要在LoadOrigarFile之前设置 OptionFlag |=
0x0400 才有效。
2.2.6
ShowToolBar
原 型: BOOL ShowToolBar;
说 明:是否显示工具栏。
数 值:
1:显示工具栏 ;
0:隐藏工具栏
2.2.7
OptionFlag
原 型: long OptionFlag;
说 明:系统标志位,可读写。此属性比较重要,可以作为各种控制开关。
数 值:
OPTIONFLAG_WORD_07SAVETO03 0x0001(Office2007保存为兼容格式)
OPTIONFLAG_EXCEL_07SAVETO03 0x0002(Office2007保存为兼容格式)
OPTIONFLAG_HTTPSAVEENC 0x0004(HttpPost时候文件加密压缩)
OPTIONFLAG_SETFILEDVALUE 0x0008(书签操作后删除盖书签)
OPTIONFLAG_NODELWORDNORMAL 0x0010(清除Word的模板文件)
OPTIONFLAG_NOENCOUDEURL 0x0020(设置URL的是否UTF8编码)
OPTIONFLAG_SHOWPRESS 0x0080(是否显示进度条)
OPTIONFLAG_DOCSHA1 0x0400(设置此项则IsModify有效)
示 例:
//1.调用LoadOriginalFile打开URL上路径的时候
// 如果对URL进行UTF8编码就调用
Flag |= 0x0020;
// 如果不对URL编码调用下面这句(默认)
Flag &= 0xffdf;
iginalFile("/tempfile/","doc");
//2.在上传和下载的时候
//调用下面语句,则显示进度条:
Flag |= 0x0080;
//调用下面语句,则不显示进度条(默认):
Flag &= 0xff7f;
//3.在上传时候设置是否对文件加密和压缩
//调用下面语句,则对文件加密和压缩:
mail: dianju@
36(44)
WebOffice开发文档
Flag |= 0x0004;
//调用下面语句,则不对文件加密和压缩(默认):
Flag &= 0xfffc;
2.2.8
Is2007
原 型: long Is2007;
功 能:判断是否Office2007,只读
参 数:
返回值:
1:是2007版本
0:不是2007版本
示 例:
//判断当前Office是不是2007版本
ice1. Is2007();
2.2.9
lContinue
原 型: long lContinue;
功 能:用于NotifyWordEvent的处理函数中,可以终止相应事件的继续执行
参 数:
返回值:
1:可以继续执行(默认)
0:不是2007版本
示 例:
//禁止关闭当前的Word/Excel/Wps文档
OnNotifyWordEvent(BSTR strEventName)
{
if(strEventName == “DocumentBeforeClose”)
{
lContinue = 0;
}
}
mail: dianju@
37(44)
WebOffice开发文档
2.3 事件
2.3.1
NotifyWordEvent
原 型: void NotifyWordEvent(BSTR strEventName);
说 明:捕获部分Word/Excel/Wps事件。
参数:strEventNameWord/Excel的事件名,可能是以下的数值
DocumentChange
DocumentBeforeClose
DocumentBeforePrint
DocumentBeforeSave
备注:本事件在本版本扩展到Excel和Wps的支持,且可以终止该事件的继续执行(使用属性lContinue)。
2.3.2
NotifyCtrlReady
原 型: void NotifyCtrlReady();
说 明:当控件准备完毕后触发,一般在这个事件中完成初始化的操作。
2.3.3
NotifyToolBarClick
原 型: void NotifyToolBarClick(long iIndex);
参 数:
long iIndex : 工具栏按钮ID。
ID_RETURN 32769
ID_NEW 32770
ID_OPEN 32771
ID_SAVEAS 32772
ID_FULLSCREAN 32773
ID_PRINT 32774
ID_PRINTVIEW 32775
说 明:
(不适用于Office2007)每个按钮都有默认的处理动作,如果不希望触发默认的处理动作,需要在此时间中设置属性lEventRet = 0;
以下实例截获了SAVEAS的按钮事件。
//1. 定义事件处理函数
//2. 截获处理事件
function WebOffice1_NotifyToolBarClick(lCmd) {
if(32772==lCmd) {
Ret = 0;
}
}
mail: dianju@
39(44)
WebOffice开发文档
三、ASP例子说明
3.1
Access数据库结构
表doc
========================================
id 自动编号
DocID 文本(10)
DocTitle 文本(10)
DocType 文本(15)
DocData 日期/时间
DocContent OLE 对象
========================================
说明:DocContent为上传的Office文档的数据,为二进制数据类型,如果使用SQLServer请改为Image类型。
3.2
演示程序主要页面说明
取得服务器的项目文件目录,赋值给Application对象,供接口调用
调用weboffice控件在线编辑word,并提交给页面上传保存word文档
保存表单元素和上传的word文件
取得数据库中的记录并返回给调用它的页面
用于调试数据传送到页
template 用于存放红头文件的模板
3.3
开发必读
1) 调用控件的时候尽量在控件ID前加“”,如:
ice1
2) Javascirpt区分大小写,使用时请注意。
3) WebOffice控件为VC++6编写,控件的所有方法和参数区分大小写,请严格参考本手册。
4) 在本控件的演示程序中,有个文件用于测试表单元素和文件上传。
mail: dianju@
40(44)
WebOffice开发文档
四、FAQ
4.1 如何把文件直接上传到服务器
WebOffice通过Http协议实现文件直接上传到服务器,原理见附件一《WebOffice文件Http上传原理》
mail: dianju@
41(44)
WebOffice开发文档
五、附录
5.1 WebOffice文件Http上传原理
WebOffice文件Http上传原理分析
点聚WebOffice控件使用了自身的文件Http上传接口实现文件和表单域的上传保存,本文将简要介绍该上传方式的原理和使用方法。注:点聚WebOffice的上传接口和AIP是一致的。
原理
因为Web页面上的WebOffice打开的文件无法随表单记录提交到处理页面,所以我们把文件模拟成表单的文件域,通过接口把文件和表单元素发送到保存记录的页面(过程类似表单的提交)。
主要上传接口:
HttpInit();
该方法用于初始化上传接口,不需要设置参数
HttpAddPostString(String FieldName, String someValue);
添加要提交的表单域, FieldName是要上传表单域名称,someValue是表单域值
例一:
HttpAddPostString("username", "zhangSan");
它类似域表单域的
例二:
HttpAddPostString("username", );
….
注意:如果使用点聚上传接口,那么form表单里的表单域不会被提交到处理页面。需要手工添加到上传接口(HttpAddPostString接口),然后通过控件发送到处理页面。例二使用了“”获取表单域值。
HttpAddPostCurrFile(String fileName, String ReName);
添加当前WebOffice编辑的文件给上传接口,该接口把文件模拟到成一个表单的文件域,并提交到处理页面。
mail: dianju@
42(44)
WebOffice开发文档
例一:
HttpAddPostCurrFile("AipFile", "");
该接口模拟表单文件域如下:
注意:第二个参数为空表示控件自动为文件命名,如:dj_,如果需要重命名可以在第二个参数指明文件名称,也可在保存页面指定文件名称。
HttpPost(String url);
执行上传操作将文件和表单域提交到url的页面进行保存操作,并获取url页面返回的执行结果 (是否成功,可以根据这个结果来获取服务器端执行的结果)。
url支持绝对路径和相对路径。
绝对路径,例如:192.168.0.1/
相对路径要以“./”或者“../”开头。例如:./
完整的上传接口演示
function SaveDoc() {
}
var returnValue; // 保存页面的返回值
it(); // 初始化Http引擎
// 添加相应的Post元素
dPostString("username", WebForm. );
// 添加上传文件
dPostCurrFile("AipFile ","");
// 提交上传文件
returnValue = st("../");
if("true" == returnValue){
}
alert("文件上传成功");
alert("文件上传失败")
} else {
关于保存
WebOffice上传接口将数据流以Http方式提交到保存页面,至于对数据处理就和普通的文件上传处理一样了,具体代码参考附件(asp和jsp的实现)。
mail: dianju@
43(44)
WebOffice开发文档
mail: dianju@
44(44)


发布评论