Posted in Javascript onDecember 08, 2009
//以下变量为JS公共变量 var TANGER_OCX_bDocOpen = false; var TANGER_OCX_filename;//文件名称 var filetype="";//文件类型 var savetype;//文件保存类型 var TANGER_OCX_OBJ; //控件对象 var TANGER_OCX_Username="匿名用户";//User Name var TANGER_OCX_key="";//设置加载印章的key var IsFileOpened; //控件是否打开文档 var svisble=true;//印章显示状态 var TANGER_OCX_strOp; //标识当前操作。1:新建;2:打开编辑;3:打开阅读 var TANGER_OCX_attachName; //标识已经存在的在线编辑文档附件的名称 var TANGER_OCX_attachURL; //在线编辑文档附件的URL var TANGER_OCX_actionURL; //表单提交到的URL //当前表单不可编辑,当整个表单只读时调用 function FormDisabled(bool) { var formid=document.forms.item(0) var elelength=formid.length; for (var i=0; i<elelength; i++) {formid.elements[i].disabled = bool;} //下面是控件标题栏,状态栏,工具栏,菜单栏不显示 TANGER_OCX_OBJ.TitleBar=!bool; TANGER_OCX_OBJ.Statusbar=!bool; TANGER_OCX_OBJ.ToolBars=!bool; TANGER_OCX_OBJ.Menubar=!bool; } //示例程序帮助文档 function NtkoHelp() { window.open("help.htm","help"); } //打开文档窗口 function popupDocWin(turl){ var aw = window.screen.availWidth; var ah = window.screen.availHeight; window.open(turl,"office"); } //新建文档 function CreatNew(DocType) { TANGER_OCX_OBJ = document.all.item("TANGER_OCX"); TANGER_OCX_OBJ.CreateNew(DocType); var useUTF8 = (document.charset == "utf-8"); TANGER_OCX_OBJ.IsUseUTF8Data = useUTF8; try { //保存该表单的提交url,将来传递给控件的SaveToURL函数 TANGER_OCX_actionURL = document.forms[0].action; //获取当前操作代码 TANGER_OCX_strOp = document.all.item("TANGER_OCX_op").innerHTML; //获取已经存在的附件名称 TANGER_OCX_attachName = document.all.item("TANGER_OCX_attachName").innerHTML; //获取已经存在的附件URL TANGER_OCX_attachURL = document.all.item("TANGER_OCX_attachURL").innerHTML; TANGER_OCX_key = document.all.item("TANGER_OCX_key").innerHTML; }catch(err){}finally{}; } //此函数在网页装载时被调用。用来获取控件对象并保存到TANGER_OCX_OBJ //同时,可以设置初始的菜单状况,打开初始文档等等。 function TANGER_OCX_Init(initdocurl) { TANGER_OCX_OBJ = document.all.item("TANGER_OCX"); var useUTF8 = (document.charset == "utf-8"); TANGER_OCX_OBJ.IsUseUTF8Data = useUTF8; try { //保存该表单的提交url,将来传递给控件的SaveToURL函数 TANGER_OCX_actionURL = document.forms[0].action; //获取当前操作代码 TANGER_OCX_strOp = document.all.item("TANGER_OCX_op").innerHTML; //获取已经存在的附件名称 TANGER_OCX_attachName = document.all.item("TANGER_OCX_attachName").innerHTML; //获取已经存在的附件URL TANGER_OCX_attachURL = document.all.item("TANGER_OCX_attachURL").innerHTML; try{ TANGER_OCX_key = document.all.item("TANGER_OCX_key").innerHTML; }catch(err){}finally{}; TANGER_OCX_OBJ.SetAutoCheckSignKey(TANGER_OCX_key); switch(TANGER_OCX_strOp) { case "1": if(initdocurl!="") { TANGER_OCX_OBJ.BeginOpenFromURL(initdocurl,true,false);//参数:URL,是否显示进程,是否只读 } break; case "2": if(TANGER_OCX_attachURL) { TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_attachURL,true,false); } else { if(initdocurl!="") TANGER_OCX_OBJ.BeginOpenFromURL(initdocurl,true,false); } break; case "3": if(TANGER_OCX_attachURL) { TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_attachURL,true,true); } break; default: //去要打开指定的模板文件,此时,TANGER_OCX_strOp指定的是url //以下使用当前文档的URL来获得模板的URL,也就是跟在?openform后面的部分 var keystr = "?openform&".toUpperCase(); var parastring = window.location.search; //alert(parastring); var urlbegin = parastring.toUpperCase().indexOf(keystr); if(-1 != urlbegin) { TANGER_OCX_strOp = parastring.substr(urlbegin+keystr.length); //alert(TANGER_OCX_strOp); //判断是否是WPS模板 var wpsKey = "vwWpsTurl".toUpperCase(); var isWpsTemplateURL = (-1 != parastring.toUpperCase().indexOf(wpsKey)); if(!isWpsTemplateURL) { TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_strOp,true,false); } else { TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_strOp,true,false,"WPS.Document"); } } break; } } catch(err){ alert("错误:" + err.number + ":" + err.description); } finally{ } } //如果原先的表单定义了OnSubmit事件,保存文档时首先会调用原先的事件。 function TANGER_OCX_doFormOnSubmit() { var form = document.forms[0]; if (form.onsubmit) { var retVal = form.onsubmit(); if (typeof retVal == "boolean" && retVal == false) return false; } return true; } //增加演示自定义菜单项目 function addMyMenuItems() { try{ TANGER_OCX_OBJ = document.all.item("TANGER_OCX"); //增加自定义文件菜单项目 TANGER_OCX_OBJ.AddFileMenuItem('保存到服务器-用户自定义菜单',false,true,1); TANGER_OCX_OBJ.AddFileMenuItem(''); //增加自定义主菜单项目 TANGER_OCX_OBJ.AddCustomMenuItem('我的菜单1:切换禁止拷贝',false,false,1); TANGER_OCX_OBJ.AddCustomMenuItem(''); TANGER_OCX_OBJ.AddCustomMenuItem('我的菜单2',false,false,2); TANGER_OCX_OBJ.AddCustomMenuItem(''); TANGER_OCX_OBJ.AddCustomMenuItem('我的菜单3',false,false,3); TANGER_OCX_OBJ.AddCustomMenuItem(''); TANGER_OCX_OBJ.AddCustomMenuItem('此菜单需要打开的文档才能使用',false,true,4); } catch(err) { } } //此函数用来保存当前文档。主要使用了控件的SaveToURL函数。 //有关此函数的详细用法,请参阅编程手册。 function TANGER_OCX_SaveDoc(fileName) { var retStr=new String; var newwin,newdoc; if(fileName=="") { alert("请指定附件名称!"); return; } try { if(!TANGER_OCX_doFormOnSubmit())return; if(!TANGER_OCX_bDocOpen) { alert("没有打开的文档。"); return; } //在编辑状态下需要删除的附件名称 var deleteFile = ""; //设置要保存的附件文件名 document.all.item("TANGER_OCX_filename").value = fileName; switch(TANGER_OCX_strOp) { case "3": alert("文档处于阅读状态,您不能保存到服务器。"); break; case "2": //需要首先删除以前的文档附件 deleteFile = (TANGER_OCX_attachName=="")?"":"%%Detach="+escape(TANGER_OCX_attachName); case "1": //新建文档 default: retStr = TANGER_OCX_OBJ.SaveToURL(TANGER_OCX_actionURL, document.all.item("NTKO_UPLOADFIELD").name, //子表单的文件上载控件的名称 deleteFile, fileName, 0 //同时提交forms[0]的信息 ); retMhtStr = TANGER_OCX_OBJ.SaveAsOtherFormatToURL( 1, TANGER_OCX_actionURL, document.all.item("NTKO_UPLOADFIELD").name, //子表单的文件上载控件的名称 "%%Detach=newdoc.mht", "newdoc.mht", 0 //同时提交forms[0]的信息 ); newwin = window.open("","_blank","left=200,top=200,width=400,height=200,status=0,toolbar=0,menubar=0,location=0,scrollbars=0,resizable=0",false); newdoc = newwin.document; newdoc.open(); newdoc.write("<center><hr>"+retStr+"<hr><input type=button VALUE='关闭窗口' onclick='window.close()'></center>"); newdoc.close(); //window.alert(retStr); window.opener.location.reload(); window.close(); break; } } catch(err){ alert("不能保存到URL:" + err.number + ":" + err.description); } finally{ } } //此函数在文档打开时被调用。 function TANGER_OCX_OnDocumentOpened(str, obj) { try { TANGER_OCX_bDocOpen = true; //设置用户名 TANGER_OCX_SetDocUser(TANGER_OCX_Username); if(obj) { switch(TANGER_OCX_strOp) { case "1": case "2": TANGER_OCX_OBJ.SetReadOnly(false); break; case "3": TANGER_OCX_OBJ.SetReadOnly(true); FormDisabled(true);//只读input元素失去焦点 break; default: break; } } } catch(err){ } finally{ } } function SaveAsHTML(URL,uploadfield,fileName) { try { var retStr = TANGER_OCX_OBJ.PublishAsHTMLToURL( URL,uploadfield, "__Click=0&filetitle="+escape(document.forms(0).filetitle.value)+ "&fileother="+escape(document.forms(0).fileother.value)+ "&fileid="+escape(document.forms(0).fileid.value)+ "&filename="+fileName, fileName//上传文件名 ); var newwin = window.open("","_blank","left=200,top=200,width=400,height=200,status=0,toolbar=0,menubar=0,location=0,scrollbars=0,resizable=0",false); var newdoc = newwin.document; newdoc.open(); newdoc.write("<center><hr>"+retStr+"<hr><input type=button VALUE='关闭窗口' onclick='window.close()'></center>"); newdoc.close(); } catch(err){ alert("不能保存到URL:" + err.number + ":" + err.description); } finally{ } } //保存文档为pdf function saveFileAsPdfToUrl(URL,uploadfield,fileName) { try { var retStr = TANGER_OCX_OBJ.PublishAsPDFToURL( URL,uploadfield,"__Click=0&filename="+fileName+ "&filetitle="+document.all("filetitle").value+ "&fileother="+document.all("fileother").value+ "&fileid="+document.all("fileid").value, fileName, "", null, true, false, false, null, false, true ); } catch(err){ alert("不能保存到URL:" + err.number + ":" + err.description); } finally{ } } //文档编辑页面关闭事件 function onPageClose() { if(IsFileOpened) { if(!TANGER_OCX_OBJ.ActiveDocument.Saved) { if(confirm( "文档修改过,还没有保存,是否需要保存?")) { TANGER_OCX_SaveDoc("newdoc.doc"); } } window.opener.location.reload(); } } //设置文件是打开还是关闭 function setFileOpenedOrClosed(bool) { IsFileOpened = bool; fileType = TANGER_OCX_OBJ.DocType ; } function trim(str) { //删除左右两端的空格 return str.replace(/(^\s*)|(\s*$)/g, ""); } //设置用户名 function TANGER_OCX_SetDocUser(cuser) { with(TANGER_OCX_OBJ.ActiveDocument.Application) { UserName = cuser; UserInitials=cuser; } } function addServerSecSign() { var signUrl=document.all("secSignFileUrl").options[document.all("secSignFileUrl").selectedIndex].value; if(IsFileOpened) { if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2) { try {TANGER_OCX_OBJ.AddSecSignFromURL("ntko",signUrl);} catch(error){} } else {alert("不能在该类型文档中使用安全签名印章.");} } } function addLocalSecSign() { if(IsFileOpened) { if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2) { try {TANGER_OCX_OBJ.AddSecSignFromLocal("ntko","");} catch(error){} } else {alert("不能在该类型文档中使用安全签名印章.");} } } function addEkeySecSign() { if(IsFileOpened) { if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2) { try {TANGER_OCX_OBJ.AddSecSignFromEkey("ntko");} catch(error){} } else {alert("不能在该类型文档中使用安全签名印章.");} } } function addHandSecSign() { if(IsFileOpened) { if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2) { try {TANGER_OCX_OBJ.AddSecHandSign("ntko");} catch(error){} } else {alert("不能在该类型文档中使用安全签名印章.");} } } function addServerSign(signUrl) { if(IsFileOpened) { try { TANGER_OCX_OBJ.AddSignFromURL("ntko",//印章的用户名 signUrl,//印章所在服务器相对url 100,//左边距 100,//上边距 根据Relative的设定选择不同参照对象 "ntko",//调用DoCheckSign函数签名印章信息,用来验证印章的字符串 3, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落 100,//缩放印章,默认100% 1); //0印章位于文字下方,1位于上方 } catch(error){} } } function addLocalSign() { if(IsFileOpened) { try { TANGER_OCX_OBJ.AddSignFromLocal("ntko",//印章的用户名 "",//缺省文件名 true,//是否提示选择 100,//左边距 100,//上边距 根据Relative的设定选择不同参照对象 "ntko",//调用DoCheckSign函数签名印章信息,用来验证印章的字符串 3, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落 100,//缩放印章,默认100% 1); //0印章位于文字下方,1位于上方 } catch(error){} } } function addPicFromUrl(picURL) { if(IsFileOpened) { if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2) { try { TANGER_OCX_OBJ.AddPicFromURL(picURL,//图片的url地址可以时相对或者绝对地址 false,//是否浮动,此参数设置为false时,top和left无效 100,//left 左边距 100,//top 上边距 根据Relative的设定选择不同参照对象 1, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落 100,//缩放印章,默认100% 1); //0印章位于文字下方,1位于上方 } catch(error){} } else {alert("不能在该类型文档中使用安全签名印章.");} } } function addPicFromLocal() { if(IsFileOpened) { try { TANGER_OCX_OBJ.AddPicFromLocal("",//印章的用户名 true,//缺省文件名 false,//是否提示选择 100,//左边距 100,//上边距 根据Relative的设定选择不同参照对象 1, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落 100,//缩放印章,默认100% 1); //0印章位于文字下方,1位于上方 } catch(error){} } } function TANGER_OCX_AddDocHeader(strHeader) { if(!IsFileOpened) {return;} var i,cNum = 30; var lineStr = ""; try { for(i=0;i<cNum;i++) lineStr += "_"; //生成下划线 with(TANGER_OCX_OBJ.ActiveDocument.Application) { Selection.HomeKey(6,0); // go home Selection.TypeText(strHeader); Selection.TypeParagraph(); //换行 Selection.TypeText(lineStr); //插入下划线 // Selection.InsertSymbol(95,"",true); //插入下划线 Selection.TypeText("★"); Selection.TypeText(lineStr); //插入下划线 Selection.TypeParagraph(); //Selection.MoveUp(5, 2, 1); //上移两行,且按住Shift键,相当于选择两行 Selection.HomeKey(6,1); //选择到文件头部所有文本 Selection.ParagraphFormat.Alignment = 1; //居中对齐 with(Selection.Font) { NameFarEast = "宋体"; Name = "宋体"; Size = 12; Bold = false; Italic = false; Underline = 0; UnderlineColor = 0; StrikeThrough = false; DoubleStrikeThrough = false; Outline = false; Emboss = false; Shadow = false; Hidden = false; SmallCaps = false; AllCaps = false; Color = 255; Engrave = false; Superscript = false; Subscript = false; Spacing = 0; Scaling = 100; Position = 0; Kerning = 0; Animation = 0; DisableCharacterSpaceGrid = false; EmphasisMark = 0; } Selection.MoveDown(5, 3, 0); //下移3行 } } catch(err){ alert("错误:" + err.number + ":" + err.description); } finally{ } } function insertRedHeadFromUrl(headFileURL) { if(TANGER_OCX_OBJ.doctype!=1)//TANGER_OCX_OBJ.doctype=1为word文档 {return;} TANGER_OCX_OBJ.ActiveDocument.Application.Selection.HomeKey(6,0);//光标移动到文档开头 TANGER_OCX_OBJ.addtemplatefromurl(headFileURL);//在光标位置插入红头文档 } function openTemplateFileFromUrl(templateUrl) { TANGER_OCX_OBJ.openFromUrl(templateUrl); } function doHandSign() { /*if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2)//此处设置只允许在word和excel中盖章.doctype=1是"word"文档,doctype=2是"excel"文档 {*/ TANGER_OCX_OBJ.DoHandSign2( "ntko",//手写签名用户名称 "ntko",//signkey,DoCheckSign(检查印章函数)需要的验证密钥。 0,//left 0,//top 1,//relative,设定签名位置的参照对象.0:表示按照屏幕位置插入,此时,Left,Top属性不起作用。1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落(为兼容以前版本默认方式) 100); //} } function SetReviewMode(boolvalue) { if(TANGER_OCX_OBJ.doctype==1) { TANGER_OCX_OBJ.ActiveDocument.TrackRevisions = boolvalue;//设置是否保留痕迹 } } function setShowRevisions(boolevalue) { if(TANGER_OCX_OBJ.doctype==1) { TANGER_OCX_OBJ.ActiveDocument.ShowRevisions =boolevalue;//设置是否显示痕迹 } } //接受或者取消所有修订 function TANGER_OCX_AllRevisions(bool) { if(bool) { TANGER_OCX_OBJ.ActiveDocument.AcceptAllRevisions();//接受所有的痕迹修订 } else { TANGER_OCX_OBJ.ActiveDocument.Application.WordBasic.RejectAllChangesInDoc();//拒绝所有的痕迹修订 } } function setFilePrint(boolvalue) { TANGER_OCX_OBJ.fileprint=boolvalue;//是否允许打印 } function setFileNew(boolvalue) { TANGER_OCX_OBJ.FileNew=boolvalue;//是否允许新建 } function setFileSaveAs(boolvalue) { TANGER_OCX_OBJ.FileSaveAs=boolvalue;//是否允许另存为 } function setIsNoCopy(boolvalue) { TANGER_OCX_OBJ.IsNoCopy=boolvalue;//是否禁止粘贴 } function DoCheckSign() { if(IsFileOpened) { var ret = TANGER_OCX_OBJ.DoCheckSign ( false,/*可选参数 IsSilent 缺省为FAlSE,表示弹出验证对话框,否则,只是返回验证结果到返回值*/ "ntko"//使用盖章时的signkey,这里为"ntko" );//返回值,验证结果字符串 //alert(ret); } } function setToolBar() { TANGER_OCX_OBJ.ToolBars=!TANGER_OCX_OBJ.ToolBars; } function setMenubar() { TANGER_OCX_OBJ.Menubar=!TANGER_OCX_OBJ.Menubar; } function setInsertMemu() { TANGER_OCX_OBJ.IsShowInsertMenu=!TANGER_OCX_OBJ.IsShowInsertMenu; } function setEditMenu() { TANGER_OCX_OBJ.IsShowEditMenu=!TANGER_OCX_OBJ.IsShowEditMenu; } function setToolMenu() { TANGER_OCX_OBJ.IsShowToolMenu=!TANGER_OCX_OBJ.IsShowToolMenu; } //增加自定义菜单 function initCustomMenus1() { var myobj = TANGER_OCX_OBJ; for(var menuPos=0;menuPos<1;menuPos++) { myobj.AddCustomMenu2(menuPos,"常用功能"+"(&"+menuPos+")"); for(var submenuPos=0;submenuPos<1;submenuPos++) { myobj.AddCustomMenuItem2(menuPos,submenuPos,-1,true,"打印设置",false); //增加子菜单项目 for(var subsubmenuPos=0;subsubmenuPos<3;subsubmenuPos++) { if(0 ==subsubmenuPos)//增加子菜单项目 { myobj.AddCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false, "设置打印区域",false,menuPos*100+submenuPos*20+subsubmenuPos); } if(1 ==subsubmenuPos)//增加子菜单项目 { myobj.AddCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false, "取消打印区域",false,menuPos*100+submenuPos*20+subsubmenuPos); } if(2==subsubmenuPos) { myobj.AddCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false, "手写批注",false,menuPos*100+submenuPos*20+subsubmenuPos); } } } } } //控件控制 function controlStyle() { var myobj = TANGER_OCX_OBJ; for(var menuPos=0;menuPos<1;menuPos++) { myobj.AddCustomMenu2(menuPos,"控件样式"+"(&"+menuPos+")"); for(var submenuPos=0;submenuPos<1;submenuPos++) { myobj.AddCustomMenuItem2(menuPos,submenuPos,-1,true,"改变大小",false); //增加子菜单项目 for(var subsubmenuPos=0;subsubmenuPos<2;subsubmenuPos++) { if(0 ==subsubmenuPos)//增加子菜单项目 { myobj.AddCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false, "全网页查看",false,menuPos*100+submenuPos*20+subsubmenuPos); } if(1 ==subsubmenuPos)//增加子菜单项目 { myobj.AddCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false, "恢复原大小",false,menuPos*100+submenuPos*20+subsubmenuPos); } } } } } //改变控件大小为当前网页可见区域 function objside() { document.all.officecontrol.style.position="absolute"; document.all.officecontrol.style.left="0px"; document.all.officecontrol.style.top="0px"; document.all.officecontrol.style.width=document.body.clientWidth;//网页可见区域宽 document.all.officecontrol.style.height=document.body.clientHeight;//网页可见区域高 } //恢复控件显示大小 function objside2() { document.all.officecontrol.style.position="relative"; document.all.officecontrol.style.left="0px"; document.all.officecontrol.style.top="0px"; document.all.officecontrol.style.width="100%"; document.all.officecontrol.style.height="980px"; } //显示或隐藏文档控件对象 function ObjectDisplay(boolvalue) { var obj=document.getElementById("objside"); if(!boolvalue) { obj.style.display="none"; } else { obj.style.display="block"; } } /** * 时间对象的格式化; */ Date.prototype.format = function(format){ /* * eg:format="YYYY-MM-dd hh:mm:ss"; */ var o = { "Y+":this.getYear(),//年 "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond } if(/(y+)/.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o) { if(new RegExp("("+ k +")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); } } return format; }
javascript OFFICE控件测试代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@