精华内容
下载资源
问答
  • [Python] python-docx 编辑word文档

    千次阅读 2014-07-21 16:27:04
    使用Python编辑Micorsoft Word 文档 [测试环境]  OS: MS XP professional SP3 Win32  Python:2.6.6 [准备]  python-docx :下载地址    [安装]   python setup.
    [目的]
    
    使用Python编辑Micorsoft Word 文档
    [测试环境]
            OS: MS XP professional SP3 Win32
            Python:2.6.6
    [准备]
            python-docx :下载地址
            [Python] word 文档 - zzq635 - 未名
     [安装]
              

    python setup.py install

     
    [Python] word 文档 - zzq635 - 未名
    [疑问]
            1.可能未装lxml module造成的.请看一下我写的 Window 安装 lxml,或Google
    [测试]
             脚本代码

    #coding=UTF-8 from docx import * def testmakedocument(): relationships = relationshiplist() document = newdocument() body = document.xpath('/w:document/w:body', namespaces=nsprefixes)[0] body.append(heading(u"文件和文件夹服务接口", 1)) body.append(paragraph(u'请求格式')) request_rows = [ ['http method', 'url', u'说明'] , ['POST', 'http://www.163.com', 'B3'] ] body.append(table(request_rows)) body.append(paragraph(u'参数说明')) body.append(paragraph(u'相应内容')) body.append(paragraph(u'示例')) body.append(heading(u"上传文件", 1)) title = u'空间服务器接口说明文档' subject = u'空间服务器接口说明' creator = u'未名' keywords = ['alfresco', 'url', 'json'] coreprops = coreproperties(title=title, subject=subject, creator=creator, keywords=keywords) # Save our document savedocx(document, coreprops, appproperties(), contenttypes(), websettings(), wordrelationships(relationships), u'空间服务器接口说明文档.docx') def testUnit(): testmakedocument() if __name__ == '__main__': testUnit()

             结果展示
             [Python] word 文档 - zzq635 - 未名
     [疑问]
             1.如果发现Import Error: no module named Image  请安装 PIL.  推荐使用PIP 仅使用一句话 :  pip install pil 
    展开全文
  • Word脚本

    千次阅读 2007-04-05 08:47:00
    /*******************公文文档操作*********************///初始化文档编辑控件//userName:OA系统登陆用户名//docID:存储在数据库中文件ID//progID:文档类型//actionType:操作类别,新建-"new";编辑-"edit";查看-...

    /******************
    *公文文档操作
    *
    *
    *******************/

    //初始化文档编辑控件
    //userName:OA系统登陆用户名
    //docID:存储在数据库中文件ID
    //progID:文档类型
    //actionType:操作类别,新建-"new";编辑-"edit";查看-"view"
    //signKey:文档签名的Key
    //fileName:文件名(不含路径)
    function InitalizeOffice(userName, progID, actionType, signKey,fileName,showSaveMenu,
                             tokenID,XPath_TEMP_Temp,XPathDesc,
                             fieldXPath_fieldValue,xpath_Editer,xpath_RadioButton)
    {
     this.UserName = userName; 
     this.ProgID = progID;
     this.ActionType = actionType;
     this.SignKey = signKey;
     this.FileName = fileName;
     this.ObjOffice = document.all.item("OfficeControl");
     this.FileUrl = "../CommonPage/DownloadDoc_Common.aspx?TokenID="+tokenID;  
     this.IsOpened = false;
     this.ReadOnly = false; 
     this.ShowSaveMenu = showSaveMenu;
     this.TokenID = tokenID;
     this.CurrentDocID = "";

        this.XPath_TEMP = XPath_TEMP_Temp;  //20061020修改
        this.XPathDesc = XPathDesc;         //20061024修改
        this.FieldXPath_FieldValue = fieldXPath_fieldValue;  //20061121修改(加载XPath、XPathValue值)
        this.XPath_Editer = xpath_Editer; //2006-12-05修改"XPath编辑字符串"
        this.XPath_RadioButton = xpath_RadioButton; //"单选(RadioButton)"XPath字符串
     //添加自定义菜单
     AddMenu();
     
     //初始化文档
     OpenDoc();
     
    }

    //添加公文操作自己的菜单,位置在帮助的前面
    function AddMenu()
    {
     //一级菜单
     this.ObjOffice.AddCustomMenu2(0,"公文操作");
     
     //二级菜单
     this.ObjOffice.AddCustomMenuItem2(0, 0, -1, false, "显示痕迹",false,0);
     this.ObjOffice.AddCustomMenuItem2(0, 1, -1, false, "隐藏痕迹",false,1);
     this.ObjOffice.AddCustomMenuItem2(0, 2, -1, false, "",true,2);
     
     this.ObjOffice.AddCustomMenuItem2(0, 3, -1, false, "编辑文档",false,3);
     this.ObjOffice.AddCustomMenuItem2(0, 4, -1, false, "启用保护",false,4);
     this.ObjOffice.AddCustomMenuItem2(0, 5, -1, false, "",true,5);
     
     this.ObjOffice.AddCustomMenuItem2(0, 6, -1, false, "添加印章",false,6);
     this.ObjOffice.AddCustomMenuItem2(0, 7, -1, false, "添加本地印章",false,7);
     this.ObjOffice.AddCustomMenuItem2(0, 8, -1, false, "印章验证",false,8);
     this.ObjOffice.AddCustomMenuItem2(0, 9, -1, false, "",true,9);
     this.ObjOffice.AddCustomMenuItem2(0, 10, -1, false, "文字套红",false,10);
     this.ObjOffice.AddCustomMenuItem2(0, 11, -1, false, "插入模板",false,11);
     this.ObjOffice.AddCustomMenuItem2(0, 12, -1, false, "",true,12);
     this.ObjOffice.AddCustomMenuItem2(0, 13, -1, false, "手写签名",false,13);
     this.ObjOffice.AddCustomMenuItem2(0, 14, -1, false, "手工绘图",false,14);
     this.ObjOffice.AddCustomMenuItem2(0, 15, -1, false, "批注",false,15);
     this.ObjOffice.AddCustomMenuItem2(0, 16, -1, false, "",true,16);
     this.ObjOffice.AddCustomMenuItem2(0, 17, -1, false, "打印预览",false,17);
     this.ObjOffice.AddCustomMenuItem2(0, 18, -1, false, "公文打印",false,18);
     this.ObjOffice.AddCustomMenuItem2(0, 19, -1, false, "",true,19);
     this.ObjOffice.AddCustomMenuItem2(0, 20, -1, false, "重新加载",false,20); 
     if (this.ShowSaveMenu == "True")
     {
      this.ObjOffice.AddCustomMenuItem2(0, 21, -1, false, "保存公文",false,21);
     }
     
     
     
     //如果是查看操作则不需要保存公文
     
     switch (this.ActionType)
     {
      case "new" :
         
       this.ObjOffice.EnableCustomMenuItem2(0,0,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,20,-1,false); 
       /*
       this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,3,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,4,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,7,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,8,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,10,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,11,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,12,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,15,-1,false);
       */
       break;
      
      case "edit" :
      
       this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
       break;
      
      case "view" :
         
          /*
          this.ObjOffice.EnableCustomMenuItem2(0,0,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,15,-1,false);
       */
       this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,3,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,4,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,6,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,7,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,10,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,11,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,13,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,14,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,15,-1,false);
       this.ObjOffice.EnableCustomMenuItem2(0,20,-1,false);
       if (this.ShowSaveMenu == "True")
       {
        this.ObjOffice.EnableCustomMenuItem2(0,21,-1,false);
       } 
       
       
       //this.ObjOffice.EnableCustomMenuItem2(0,16,-1,false);
       break;
     }
     
     
    }

    //公文操作自定义菜单的操作
    //menuPos:一级菜单位置
    //submenuPos:二级菜单位置
    //subsubmenuPos:三级菜单位置
    //menuCaption:菜单标题
    //menuID:菜单ID
    function CustomOperation(menuPos,submenuPos,subsubmenuPos,menuCaption,menuID)
    {
     switch (menuID)
     {
      //显示痕迹
      case 0 :
       
       TANGER_OCX_ShowRevisions(true);
       
       break;
       
      //隐藏痕迹
      case 1 :
       
       TANGER_OCX_ShowRevisions(false);
       
       break;
      
      //编辑文档
         case 3:
        
             TANGER_OCX_unLockAllField();
             break;
        
         //启用保护
         case 4:
        
             TANGER_OCX_LockAllField();
             break;
       
      //添加印章
      case 6 :
      
       window.open("../OA.Archive/SelectSignTemplate.aspx","选择印章","height=350, width=350, top=0, left=0, toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");   
       
       break;
        
      //添加本地印章
      case 7 :
      
       AddSignFromLocal();
        
       break;
      
      //印章验证
      case 8 :
       
       DoCheckSign();
       
       break;
      
      //文字套红 
      case 10 :
       
       var val=window.prompt("输入红头文件的文字","深圳市嵘兴实业发展有限公司");
       if(val!="")
       {
        TANGER_OCX_AddDocHeader(val);
       }
     
       break;
       
      //模板套红
      case 11 :
       
       window.open("../OA.Archive/SelectHeadTemplate.aspx","选择模板","height=350, width=350, top=0, left=0, toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
       
       break;
       
      //手写签名
      case 13 :
       
       DoHandSign2();
       
       break;
      
      //手工绘图
      case 14 :
       
       DoHandDraw2();
       
       break;
      
      
      //批注
      case 15 :
       
       DoFullScreenHandSign();
       
       break;
      
      //打印预览
      case 17 :
          TANGER_OCX_PrintPreView();
          break;
       
      //公文打印
      case 18 :
       
       TANGER_OCX_PrintDoc(false);
       
       break;
      //重新加载
      case 20 :
       if (confirm("重新加载将失去所有的修改,确定?"))
       {
        OpenDoc();
       }
       break;
      //保存公文
      case 21 :
      
       TANGER_OCX_SaveEditToServerDatabase();  
        
       break;
     } 
    }

    //新建文档
    function CreateNewDoc()
    {
     try
     {    
      this.ObjOffice.BeginOpenFromUrl(this.ProgID,true); 
      
     }
     catch(err)
     {
      this.IsOpened = false;
      alert("err:" + err.number + ":" + err.description);
     }
     //设置编辑用户
     TANGER_OCX_SetDocUser(this.UserName);
    }

    //新建文档或者打开要编辑、查看的文档
    function OpenDoc()
    {
     switch (this.ActionType)
     {
      //新建文档
      case "new" :
          //CreateNewDoc();
         
       try
       {
           this.ObjOffice.BeginOpenFromUrl(this.ProgID,true); 
           //
           this.ObjOffice.Menubar = false;
        this.ObjOffice.Toolbars = false;
        this.ObjOffice.Statusbar = true;
           //
        this.ObjOffice.IsShowToolMenu = false;
        this.ObjOffice.SetReadOnly(false,"");
        //
        this.ObjOffice.FileNew =false;
        this.ObjOffice.FileOpen =false;
        this.ObjOffice.FileClose =false;
        this.ObjOffice.FileSave =false;
        this.ObjOffice.FileSaveAS =false;
        this.ObjOffice.FilePrintPreview = false;
        this.ObjOffice.FilePageSetup = false;
        this.ObjOffice.FileProperties = false;
        
       }
       catch (err)
       {
          alert("err:" + err.number + ":" + err.description);
          CreateNewDoc();
       }
       
       
       break;
      
      //编辑文档
      case "edit" :
       
       try
       {    
        this.ObjOffice.BeginOpenFromUrl(this.FileUrl,true); 
        //this.ObjOffice.BeginOpenFromUrl(this.ProgID); 
        this.ObjOffice.Menubar = false;
        this.ObjOffice.Toolbars = false;
        this.ObjOffice.Statusbar = true;
        //
        this.ObjOffice.IsShowToolMenu = false;
        this.ObjOffice.IsShowToolMenu = false;
        
        //
        this.ObjOffice.FileNew =false;
        this.ObjOffice.FileOpen =false;
        this.ObjOffice.FileClose =false;
        this.ObjOffice.FileSave =false;
        this.ObjOffice.FileSaveAS =false;
        this.ObjOffice.FilePrintPreview = false;
        this.ObjOffice.FilePageSetup = false;
        this.ObjOffice.FileProperties = false;
        this.ObjOffice.SetReadOnly(false,"");
        
       }
       catch(err)
       {
        alert("err:" + err.number + ":" + err.description);
        
        CreateNewDoc();
       }
       
       break;
      
      //查看文档
      case "view" :
       
       try
       {
        this.ObjOffice.BeginOpenFromUrl(this.FileUrl);
        this.ObjOffice.Menubar = false;
        this.ObjOffice.Toolbars = false;
        this.ObjOffice.Statusbar = false;    
        //
        this.ObjOffice.FileNew =false;
        this.ObjOffice.FileOpen =false;
        this.ObjOffice.FileClose =false;
        this.ObjOffice.FileSave =false;
        this.ObjOffice.FileSaveAS =false;
        this.ObjOffice.FilePrintPreview = false;
        this.ObjOffice.FilePageSetup = false;
        this.ObjOffice.FileProperties = false;
        this.ObjOffice.SetReadOnly(true,"");
        
        
       }
       catch(err)
       {
        alert("err:" + err.number + ":" + err.description);
        
        CreateNewDoc();
       }
       
       break;
       
      //默认为新建文档
      default:
      
       try
       {    
        this.ObjOffice.CreateNew(this.ProgID);
       }
       catch(err)
       {
        this.IsOpened = false;
        alert("err:" + err.number + ":" + err.description);
       }
       
       break;
     }
     
     this.IsOpened = true;
    }

    //保存文档内容到数据库
    function TANGER_OCX_SaveEditToServerDatabase()
    {
     if(!this.IsOpened)
     {
      alert("文档没有打开。");
      return;
     } 
     if ( (typeof(this.FileName) == "undefined")||(!this.FileName) || (strtrim(this.FileName)==""))
     {
      alert("必须输入文件名。");
      return;
     }
     
     //alert(this.FileName);
     var newwin,newdoc;
     try
     {
         var getValidErrorMgs="";
         getValidErrorMgs = TANGER_OCX_ValidErrorMsg();//XML架构验证
         var i = getValidErrorMgs.length;
         if (i > 0)
         {
             alert(getValidErrorMgs);
         }
         else
         {
             //设置文档为编辑状态
             if (this.XPath_TEMP.length > 0)
             {
                TANGER_OCX_unLockAllField();
             }
             //根据XPath获取值
             if (this.XPath_TEMP.length > 0)
             {
                TANGER_OCX_GetXPathValue();
             }
              //设置文档为[启用保护]
             if (this.XPath_TEMP.length > 0)
             {
                TANGER_OCX_LockAllField();
             }
             //
        if(!TANGER_OCX_doFormOnSubmit())return; //we may do onsubmit first
      
        //call SaveToURL with other form data
        retHTML = this.ObjOffice.SaveToURL
        ("../CommonPage/SaveArchive_Common.aspx",
        "ARCHIVEDOC",
        "DocType="+this.ObjOffice.DocType+"&TokenID="+this.TokenID+
        "&XPath_Temp="+this.ObjOffice.document.getElementById("XPath").value+
        "&XPathValue="+this.ObjOffice.document.getElementById("XPathValue").value+
        "&FieldValueDesc="+this.ObjOffice.document.getElementById("FieldValueDesc").value+
        "&XPathDesc="+this.XPathDesc,
        this.FileName,
        0);

       var Dom = new ActiveXObject("MSXML2.DOMDocument.3.0");
       Dom.loadXML(retHTML);
       var content = Dom.selectSingleNode("ReMessage/Text").text;
       this.CurrentDocID = Dom.selectSingleNode("ReMessage/DocID").text;
       alert("保存成功!");
      }
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //保存到服务器硬盘
    function TANGER_OCX_SaveEditToServerDisk()
    {
     var filename = this.FileName;
     
     if(!this.IsOpened)
     {
      alert("文档没有打开。");
      return false;
     } 
     
     var newwin,newdoc;
     try
     {
       if(!TANGER_OCX_doFormOnSubmit())return false;
        
      retHTML = this.ObjOffice.SaveToURL
      ("../CommonPage/SaveArchive.aspx",
      "ARCHIVEDOC",
      "DocType="+this.ObjOffice.DocType+"&TokenID="+this.TokenID,
      this.FileName,
      0
      );

      var Dom = new ActiveXObject("MSXML2.DOMDocument.3.0");
      Dom.loadXML(retHTML);
      var content = Dom.selectSingleNode("ReMessage/Text").text;
      this.CurrentDocID = Dom.selectSingleNode("ReMessage/DocID").text;
      /*
      newwin = window.open("","_blank","left=200,top=200,width=200,height=150,status=0,toolbar=0,menubar=0,location=0,scrollbars=0,resizable=0",false);  
      newdoc = newwin.document;
      newdoc.open();
      newdoc.write("<html><head><title>保存内容</title></head><body><center><hr>")
      newdoc.write(content+"<br><hr>");
      newdoc.write("<input type=button VALUE='关 闭' οnclick='window.close()'>");
      newdoc.write('</center></body></html>');
      newdoc.close();
      */
      
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
      return false;
     }
     finally{
     } 
     
     return true;
    }

    //保存为HTML文档
    function TANGER_OCX_SaveAsHTML()
    {
     var newwin,newdoc;

     if(!this.IsOpened)
     {
      alert("文档没有打开。");
      return;
     }
     if ( (typeof(this.FileName) == "undefined")||(!this.FileName) || (strtrim(this.FileName)==""))
     {
      alert("必须输入文件名。");
      return;
     } 
     try
     {
      var retHTML = this.ObjOffice.PublishAsHTMLToURL
       (
        "uploadhtmls.aspx",
        "HTMLFILES",
        "",
        TANGER_OCX_filename
        );
      newwin = window.open("","_blank","left=200,top=200,width=400,height=300,status=0,toolbar=0,menubar=0,location=0,scrollbars=1,resizable=1",false);
      newdoc = newwin.document;
      newdoc.open();
      newdoc.write("<center><hr>"+retHTML+"<hr><input type=button VALUE='Close Window' οnclick='window.close()'></center>");
      newdoc.close(); 
      newwin.focus();
      if(window.opener)
      {
       window.opener.location.reload();
      }
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //从本地增加印章文档指定位置
    function AddSignFromLocal()
    {
       if(this.IsOpened)
       {
        this.ObjOffice.AddSignFromLocal(
     this.UserName,//当前登陆用户
     "",//缺省文件
     true,//提示选择
     0,//left
     0,//top
     this.SignKey,//SignKey
     1,//Relative
     100,
     0)
       }
    }

    //从URL增加印章文档指定位置
    function AddSignFromURL(URL)
    {
       if(this.IsOpened)
       {
        this.ObjOffice.AddSignFromURL(
     this.UserName,//当前登陆用户
     URL,//URL
     50,//left
     50,//top
     this.SignKey,
     1,
     100,
     0)
       }
    }

    //开始手写签名
    function DoHandSign()
    {
       if(this.IsOpened)
       { 
     this.ObjOffice.DoHandSign(
     this.UserName,//当前登陆用户 必须
     0,//笔型0-实线 0-4 //可选参数
     0x00000000, //颜色 0x00RRGGBB//可选参数
     2,//笔宽//可选参数
     100,//left//可选参数
     50,false,this.SignKey); //top//可选参数
     }
    }

    //开始手写签名V4.0.0.0
    function DoHandSign2()
    {
     this.ObjOffice.DoHandSign2 (
      this.UserName,//当前登陆用户 必须
      this.SignKey, //SignKey
      0,//left//可选参数
      0,//top
      1,//relative=0,表示按照屏幕位置批注
      100 //缩放100%,表示原大小
     );
    }

    /*
    relative可选参数指明手写批注的位置。默认为4,兼容以前版本。可以取如下值:
    0:表示按照屏幕位置插入,此时,Left,Top属性不起作用。
    1:光标位置;
    2:页边距;
    3:页面距离
    4:默认设置栏,段落(为兼容以前版本默认方式)
    */

    //检查签名结果
    function DoCheckSign()
    {
     if(this.IsOpened)
     {  
      var ret = this.ObjOffice.DoCheckSign
      (false,this.SignKey
      /*可选参数 IsSilent 缺省为FAlSE,表示弹出验证对话框,否则,只是返回验证结果到返回值*/
      );//返回值,验证结果字符串 
     } 
    }

    //从本地添加图片
    function AddPictureFromLocal()
    {
     if(this.IsOpened)
     { 
        this.ObjOffice.AddPicFromLocal(
     "", //path
     true,//prompt to select
     true,//is float
     0,//left
     0); //top
     }; 
    }

    //根据Url添加图片
    function AddPictureFromURL(URL)
    {
     if(this.IsOpened)
     {
      this.ObjOffice.AddPicFromURL(
      URL,//URL Note: URL must return Word supported picture types
      true,//is float
      0,//left
      0);//top
     };
    }

    //根据Url插入文本
    function InsertDocFromURL(URL)
    {
     if(this.IsOpened)
     {
      this.ObjOffice.AddTemplateFromURL(URL);
     };
    }

    //根据Path插入文本
    function InsertDocFromLocal(Path)
    {
     if(this.IsOpened)
     {
      this.ObjOffice.AddTemplateFromLocal(Path);
     };
    }

    //全屏绘图
    function DoHandDraw()
    {
     if(this.IsOpened)
     { 
     this.ObjOffice.DoHandDraw(
      0,// syle 0-4
      0x00ff0000,//color: 0x00RRGGBB optional
      3,//width optional
      0,//left optional
      0);//top optional
     }
    }

    //全屏绘图V4.0.0.0
    function DoHandDraw2()
    {
     this.ObjOffice.DoHandDraw2 (
      0,//left//可选参数
      0,//top
      1,//relative=0,表示按照屏幕位置批注
      100 //缩放100%,表示原大小
     );
    }

    //红头模版
    function TANGER_OCX_AddDocHeader( strHeader )
    {
     var i,cNum = 30;
     var lineStr = "";
     try
     {
      for(i=0;i<cNum;i++) lineStr += "_";
      with(this.ObjOffice.ActiveDocument.Application)
      {
       Selection.HomeKey(6,0); // go home
       Selection.TypeText(strHeader);
       Selection.TypeParagraph();
       Selection.TypeText(lineStr);
       Selection.TypeText("★");
       Selection.TypeText(lineStr); 
       Selection.TypeParagraph();
       Selection.HomeKey(6,1);
       Selection.ParagraphFormat.Alignment = 1;
       with(Selection.Font)
       {
        Name = "Arial";
        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);
      }
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //获取域代码
    function TANGER_OCX_FieldCode(i)
    {
        try
        {
            with(this.ObjOffice.ActiveDocument)
      {
          var Value = Fields(i).Code;
          return Value;
      }
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //插入□√
    function TANGER_OCX_InsertPane()
    {
        try
        { 
            with(this.ObjOffice.ActiveDocument.Application)
      {
          /*
          var wdCollapseStart = 1;
          var wdCollapseEnd =0;
          Selection.Collapse(Direction=wdCollapseStart);
          Selection.Fields.Add(Range=Selection.Range, Type=-1, Text="eq "+"//"+"o"+"//"+"ac(□,√)", PreserveFormatting=false);
          */
          //AttachedTemplate.AutoTextEntries("Check").Insert(Where=Selection.Range);
          /*
          with(Application)
          {
              AttachedTemplate.AutoTextEntries("Check").Insert(Where=Selection.Range);
          }
          */
          var node;
          var checkStr = String.fromCharCode(-3842);
          node = Selection.XMLParentNode;
          if (!node.HasChildNodes)
          {
             node.Range.Font.Name = "Wingdings";
             node.Range.Text =checkStr;
          }
      }
      
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
        finally{
        }
    }

    //取消打勾(插入□)
    function TANGER_OCX_UnInsertPane()
    {
        try
        {
            with(this.ObjOffice.ActiveDocument.Application)
      {
          //Selection.TypeText("□");
          /*
          var wdCollapseStart = 1;
          var wdCollapseEnd =0;
          Selection.Collapse(Direction=wdCollapseStart);
          Selection.Fields.Add(Range=Selection.Range, Type=-1, Text="eq "+"//"+"o"+"//"+"ac(□)", PreserveFormatting=false);
          */
          /*
          with(Application)
          {
             AttachedTemplate.AutoTextEntries("UnCheck").Insert(Where=Selection.Range);
          }
          */
          var node;
          var uncheckStr = String.fromCharCode(-3985);
          node = Selection.XMLParentNode;
          if (!node.HasChildNodes)
          {
             node.Range.Font.Name = "Wingdings";
             node.Range.Text =uncheckStr;
          }
      }
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //节点(Node)是否在this.XPath_RadioButton存在,存在返回为true,否则返回false;
    function TANGER_OCX_SeachNodeName(nodeName)
    {
        var i = -1;
        var y=0;
        var XPath="";
         var S = ";";
        var RadioButton_String = this.XPath_RadioButton;
        var x = RadioButton_String.indexOf(S);
        while(x != -1)
     {
         XPath = RadioButton_String.substring(y,x); //取出XPath参数 
      y = x+1;
      x = RadioButton_String.indexOf(S,x+1);
      //
      i = XPath.indexOf(nodeName);
      if ( i >= 0)
      {
         break;
      }
     }
     
     if (i >= 0)
     {
        return true;
     }
     else
     {
        return false;
     }
    }

    //打勾、非打勾的切换
    function TANGER_OCX_SwitchCheckStatus()
    {
     try
     {
      with(this.ObjOffice.ActiveDocument.Application)
      {
       var checkStr = String.fromCharCode(-3842);   //打勾
       var uncheckStr = String.fromCharCode(-3985); //非打勾
       var node;
       node = Selection.XMLParentNode;
       if (this.XPath_RadioButton.length > 0)
       {
           var NodeName = node.BaseName;
           var Flag =  TANGER_OCX_SeachNodeName(NodeName);//节点(Node)是否在this.XPath_RadioButton存在,存在返回为true,否则返回false;
           if (Flag)
           {
               TANGER_OCX_SetNodeNameUnCheck(NodeName);//根据NodeName设定节点为“非选择”框
              // TANGER_OCX_SetNodeNameUnCheck(NodeName);
               //
               if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
         {
          node.Range.Font.Name = "Wingdings";
          if (node.Text == checkStr)
          {
           node.Text = uncheckStr;
          }
          else
          {
           node.Text = checkStr
          }
         }
           }
           else
           {
               if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
         {
          node.Range.Font.Name = "Wingdings";
          if (node.Text == checkStr)
          {
           node.Text = uncheckStr;
          }
          else
          {
           node.Text = checkStr
          }
         }
           }
       }
       else
       {
        if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
        {
         node.Range.Font.Name = "Wingdings";
         if (node.Text == checkStr)
         {
          node.Text = uncheckStr;
         }
         else
         {
          node.Text = checkStr
         }
        }
       }
      }
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据NodeName设定节点为“非选择”框
    function TANGER_OCX_SetNodeNameUnCheck(NodeName)
    {
        try
        {
            var wdEditorCurrent = -6;
            var uncheckStr = String.fromCharCode(-3985); //非打勾
      var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
         //var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
         var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*/x:" + NodeName,strPrefix);
         var j = Nodes.Count;
      for (i=1;i<=j;i++)
      {
       var node = Nodes.Item(i);
     
              node.Range.Editors.Add(wdEditorCurrent);
              node.Range.Font.Name = "Wingdings";
              node.Text = uncheckStr;
       
      }
      return true;
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
       
    }

     

    //根据XPath返回元素的Node
    function TANGER_OCX_GetNode(XPath)
    {
        try
     {
         with (this.ObjOffice.ActiveDocument)
         {
       var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
       var node = SelectSingleNode(XPath,strPrefix);
       return node;
      }
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //根据XPath插入打勾(非选择XPath时)
    function TANGER_OCX_CheckBox(XPath)
    {
        try
        { 
           with (this.ObjOffice.ActiveDocument)
           {
               var checkStr = String.fromCharCode(-3842);   //打勾
         var uncheckStr = String.fromCharCode(-3985); //非打勾
               var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
         //var node = SelectSingleNode(XPath,strPrefix);
         var node =TANGER_OCX_GetNode(XPath);
         if (node != null)
         {
        node.Range.Font.Name = "Wingdings";
        SelectSingleNode(XPath,strPrefix).Text = checkStr;
         }
           }
        }
         catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据XPath插入非打勾(非选择XPath时)
    function TANGER_OCX_UnCheckBox(XPath)
    {
        try
        { 
           with (this.ObjOffice.ActiveDocument)
           {
               var checkStr = String.fromCharCode(-3842);   //打勾
         var uncheckStr = String.fromCharCode(-3985); //非打勾
               var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
         //var node = SelectSingleNode(XPath,strPrefix);
         var node = TANGER_OCX_GetNode(XPath);
         if (node != null)
         {
        node.Range.Font.Name = "Wingdings";
        SelectSingleNode(XPath,strPrefix).Text = uncheckStr;
         }
           }
        }
         catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //根据XPath返回元素的值
    function TANGER_OCX_GetText(XPath)
    {
        try
     {
      var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
      var ValueText = this.ObjOffice.ActiveDocument.SelectSingleNode(XPath,strPrefix).Text;
      return ValueText;
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据XPath设定元素的值
    function  TANGER_OCX_SetText(XPath,ValueText)
    {
        try
     {
      var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
      this.ObjOffice.ActiveDocument.SelectSingleNode(XPath,strPrefix).Text = ValueText;
      return true;
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据FieldXPath、FieldValue设定XPath的初始值
    function TANGER_OCX_SetTextAll(FileValue_XPath)
    {
        try
     {
         var y=0;
         var XPath="";        //XPath
         var XPathValue="";   //XPath值
         var S = ";";
         var TestXPath = FileValue_XPath;
         var x = TestXPath.indexOf(S);
      while(x != -1)
      {
          XPath = TestXPath.substring(y,x); //取出XPath参数 
          y = x+1;
       x = TestXPath.indexOf(S,x+1);
       //
       XPathValue = TestXPath.substring(y,x); //取出XPath参数 
       y = x+1;
       x = TestXPath.indexOf(S,x+1);
       //根据XPath,设定XPath元素的值
       //根据XPath,设定XPath元素的值
       switch (XPathValue)
       {
           case "1" : //打勾
           {
               //打勾、非打勾的切换
              TANGER_OCX_CheckBox(XPath);
              break;
           }
           case "2" : //非打勾
           {
               TANGER_OCX_UnCheckBox(XPath);
               break;
           }
           default :
           {
               TANGER_OCX_SetText(XPath,XPathValue);
           }
       }
      }
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

     

    //根据XPath、i返回元素的值(Items)
    function TANGER_OCX_GetItemNode(XPath,i)
    {
        try
     {
         with (this.ObjOffice.ActiveDocument)
      {
       var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
       var Node = SelectNodes(XPath,strPrefix).Item(i);
       return Node;
      }
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据XPath参数获取XPath属性的个数
    function TANGER_OCX_GetXPathAttributesCount(XPath,i)
    {
        try
        {
            with (this.ObjOffice.ActiveDocument)
      {
       var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
       var count = SelectNodes(XPath,strPrefix).Item(i).Attributes.Count;
       return count;
      }
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据XPath参数获取XPath的XMLNode个数
    function TANGER_OCX_GetXPathXMLNodeCount(XPath)
    {
        try
        {
            with (this.ObjOffice.ActiveDocument)
         {
       var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
       var count = SelectNodes(XPath,strPrefix).Count;
       return count;
      }
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据XPath、Item、Attribute参数取出(Desc、Value)值
    function TANGER_OCX_GetXPathItemAttributesValue(XPath,i,j)
    {
        try
        { 
           with (this.ObjOffice.ActiveDocument)
           {
               var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
         var DescValue = SelectNodes(XPath,strPrefix).Item(i).Attributes(j).Text;
         return DescValue;
           }
        }
         catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //根据XPath获取值
    function TANGER_OCX_GetXPathValue(){
       try
        {
            if (this.XPath_TEMP.length > 0 )
            {
       var TestXPath = this.XPath_TEMP;
       this.ObjOffice.document.getElementById("XPath").value =TestXPath;
       var S = ";";
       //计算XPath个数
       var j=0;
       var index = TestXPath.indexOf(S);
       while(index != -1)
       {
        j++;
        index = TestXPath.indexOf(S,index+1);
       }
       var my_XPath = new Array(j);
       //根据XPath参数取出XPath值
       
       var my_FieldValueDesc = new Array(j); //字段值描述数组
       //var node;
       var i=0;
       var TextValue="";
       var nodeBaseName="";
       var y=0;
       var x = TestXPath.indexOf(S);
       while(x != -1)
       {
        my_XPath[i] = TestXPath.substring(y,x); //取出XPath参数
        var XPath = my_XPath[i].toString();
        
        with(this.ObjOffice.ActiveDocument.Application)
        {
         var checkStr = String.fromCharCode(-3842);   //打勾
         var uncheckStr = String.fromCharCode(-3985); //非打勾
         var node;
         //
         
         var I = TANGER_OCX_GetXPathXMLNodeCount(XPath);  //获取XMLNode的个数
         //
         if (I > 1)
         {
          var X=1;
          var Y = I+1;
          var fieldValueDesc = "";
          for (X; X < Y; X++ )
          {
               
           node = TANGER_OCX_GetItemNode(XPath,X);
           if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
           {
            node.Range.Font.Name = "Wingdings";
            if (node.Text == checkStr)
            {
             var Z = TANGER_OCX_GetXPathAttributesCount(XPath,X); //根据XPath获取XMLNode的属性的个数
             var a = 1;
             var b = Z+1;
               
             for (a; a < b; a++)
             {
              if (a ==1)  //取属性描述(Desc)值
              {
               fieldValueDesc += TANGER_OCX_GetXPathItemAttributesValue(XPath,X,a)+",";
              }
              else if (a == 2) //取属性(Value)值
              {
              TextValue = TextValue + TANGER_OCX_GetXPathItemAttributesValue(XPath,X,a)+",";
              }
             }
            }
           }
          }
          //将单选或多选的Desc、Value值的最后一个逗号去掉。
          
          var e = fieldValueDesc.length;
          var Str = ",";
          var f = fieldValueDesc.lastIndexOf(Str);
          var g = 0;
          g = f+ 1;
          if (e == g)
          {
           fieldValueDesc = fieldValueDesc.substring(0,f);
          }
          //
          /*
          var Str = ",";
          var e = TextValue.length;
          var f = TextValue.lastIndexOf(Str);
          var g = 0;
          g = f+1;
          if (e== g)
          {
           TextValue = TextValue.substring(0,f);
          }
          */
          //
          my_FieldValueDesc[i] =  fieldValueDesc+";";
          TextValue += "*";
         }
         else
         {
          TextValue = TextValue + TANGER_OCX_GetText(XPath) + "*";  //求出XPath值
          my_FieldValueDesc[i] = ""+";";
         }
         y = x+1;
         i++;
         x = TestXPath.indexOf(S,x+1);
        }
       }
       this.ObjOffice.document.getElementById("XPathValue").value =TextValue;  //将XPath值赋给---XPathValue
       //将my_FieldValueDesc值赋给---FieldValueDesc(字段值描述)
       var FieldValueDescStr = "";
       var c =0;
       var d = my_FieldValueDesc.length;
       for (c ; c < d; c++)
       {
       FieldValueDescStr += my_FieldValueDesc[c].toString();
       }
       this.ObjOffice.document.getElementById("FieldValueDesc").value = FieldValueDescStr;  //
      }
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //编辑所有XPath
    function TANGER_OCX_GetEditer_AllField()
    {
        try
        {
            var XPath_Editer_Temp = this.XPath_Editer;
      var S = ";";
      var nodeBaseName="";
      var y=0;
      var x = XPath_Editer_Temp.indexOf(S);
      while(x != -1)
      {
          nodeBaseName = XPath_Editer_Temp.substring(y,x); //取出XPath参数 
          TANGER_OCX_EditerFieldNode(nodeBaseName);
          y = x+1;
       x = XPath_Editer_Temp.indexOf(S,x+1);
      }
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //编辑XPath
    function TANGER_OCX_EditerFieldNode(XPath)
    {
        try
        {
      var wdEditorCurrent = -6;
      var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
         var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
         var j = Nodes.Count;
      for (i=1;i<=j;i++)
      {
       var node = Nodes.Item(i);
       if (!node.HasChildNodes)
       {
          if (node.BaseName == XPath)
          {
             node.Range.Editors.Add(wdEditorCurrent);
          }
       }
      }
      return true;
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    //解除[启用保护]
    function TANGER_OCX_unLockAllField()
    {
        try
        {
      var wdEditorCurrent = -6;
      var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
         var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
         var j = Nodes.Count;
      for (i=1;i<=j;i++)
      {
       var node = Nodes.Item(i);
       if (!node.HasChildNodes)
       {
          node.Range.Editors.Add(wdEditorCurrent);
       }
      }
      return true;
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //[启用保护]
    function TANGER_OCX_LockAllField()
    {
       try
        {
            var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
      var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
      var j = Nodes.Count;
      for( i=1;i<=j;i++){
          var node = Nodes.Item(i);
       if( node.Range.Editors.Count > 0 )
       {
        node.Range.Editors.Item(1).DeleteAll();
       }
      }
      return true;
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }


    //XML架构验证
    function TANGER_OCX_ValidErrorMsg()
    {
        try
        {
             var wdXMLValidationStatusOK = 0;
             var Nodes = this.ObjOffice.ActiveDocument.XMLNodes;
             var j = Nodes.Count;
             var getValidErrorMgs="";
             //alert(j);
             for(i=1;i<=j;i++)
             {
                var node = Nodes.Item(i);
                node.Validate();
       if ( node.ValidationStatus != wdXMLValidationStatusOK)
       {
          getValidErrorMgs += node.BaseName + node.ValidationErrorText + "/n/r";
       }
             }
             return getValidErrorMgs;
        }
        catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

     

    function strtrim(value)
    {
     return value.replace(/^/s+/,'').replace(//s+$/,'');
    }

    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 TANGER_OCX_EnableReviewBar(boolvalue)
    {
     this.ObjOffice.ActiveDocument.CommandBars("Reviewing").Enabled = boolvalue;
     this.ObjOffice.ActiveDocument.CommandBars("Track Changes").Enabled = boolvalue;
     this.ObjOffice.IsShowToolMenu = boolvalue;
    }

    function TANGER_OCX_SetReviewMode(boolvalue)
    {
     this.ObjOffice.ActiveDocument.TrackRevisions = boolvalue;
    }

    function TANGER_OCX_SetMarkModify(boolvalue)
    {
     TANGER_OCX_SetReviewMode(boolvalue);
     TANGER_OCX_EnableReviewBar(!boolvalue);
    }

    function TANGER_OCX_ShowRevisions(boolvalue)

     try{this.ObjOffice.SetReadOnly(false,'');}catch(E){alert(E.description);}finally{};
     this.ObjOffice.ActiveDocument.ShowRevisions = boolvalue;
     this.ObjOffice.ActiveDocument.TrackRevisions = boolvalue; 
     
     this.ObjOffice.EnableCustomMenuItem2(0,0,-1,!boolvalue);
     this.ObjOffice.EnableCustomMenuItem2(0,1,-1,boolvalue);
     if (this.ActionType == "view")
     {
      this.ObjOffice.SetReadOnly(true,'');  
     }
    }

    function TANGER_OCX_PrintRevisions(boolvalue)
    {
     this.ObjOffice.ActiveDocument.PrintRevisions = boolvalue;
    }

    function TANGER_OCX_SetDocUser(username)
    {
     with(this.ObjOffice.ActiveDocument.Application)
     {
      UserName = this.UserName;  
     } 
    }

    function TANGER_OCX_ChgLayout()
    {
      try
     {
      this.ObjOffice.showdialog(5);
     }
     catch(err){
      alert("err:" + err.number + ":" + err.description);
     }
     finally{
     }
    }

    function TANGER_OCX_PrintPreView()
    {
       try
     {
      this.ObjOffice.PrintPreview();
     }
     catch(err){
      alert("err:"  + err.number + ":" + err.description);
     }
     finally{
     }
    }

    function TANGER_OCX_PrintDoc()
    {
     try
     {
      this.ObjOffice.printout(true);
     }
     catch(err){
      alert("err:"  + err.number + ":" + err.description);
     }
     finally{
     }
    }

     


    function TANGER_OCX_EnableFileNewMenu(boolvalue)
    {
     this.ObjOffice.EnableFileCommand(0) = boolvalue;
    }

    function TANGER_OCX_EnableFileOpenMenu(boolvalue)
    {
     this.ObjOffice.EnableFileCommand(1) = boolvalue;
    }

    function TANGER_OCX_EnableFileCloseMenu(boolvalue)
    {
     this.ObjOffice.EnableFileCommand(2) = boolvalue;
    }

    function TANGER_OCX_EnableFileSaveMenu(boolvalue)
    {
     this.ObjOffice.EnableFileCommand(3) = boolvalue;
    }

    function TANGER_OCX_EnableFileSaveAsMenu(boolvalue)
    {
     this.ObjOffice.EnableFileCommand(4) = boolvalue;
    }

    function TANGER_OCX_EnableFilePrintMenu(boolvalue)
    {
     this.ObjOffice.EnableFileCommand(5) = boolvalue;
    }

    function TANGER_OCX_EnableFilePrintPreviewMenu(boolvalue)
    {
     this.ObjOffice.EnableFileCommand(6) = boolvalue;
    }

    function TANGER_OCX_OnDocumentOpened(str, obj)
    {
     this.IsOpened = true; 
     TANGER_OCX_SetDocUser(this.UserName);
    }

    function TANGER_OCX_OnDocumentClosed()
    {
       this.IsOpened = false;
    }

    function doFileFunction(menuID)
    {
     return "";
    }

    function DoFullScreenHandSign()
    {
       if(this.IsOpened)
       { 
     this.ObjOffice.DoHandSign2(
     this.UserName,//当前登陆用户 必须 
     this.SignKey,
        0,//left//可选参数
     0,//top
     1,//relative=0,表示按照屏幕位置批注
     100 //缩放100%,表示原大小
     );
      }
    }

    function openWindow(URL,Title)
    {
     window.open(URL,Title,"height=450, width=500, top=0, left=0, toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");       
    }

    function TANGER_OCX_SetReviewMode(boolvalue)
    {
     this.ObjOffice.ActiveDocument.TrackRevisions = boolvalue;
    }

    function TANGER_OCX_PrintRevisions(boolvalue)
    {
     this.ObjOffice.SetReadOnly(false,"");
     this.ObjOffice.ActiveDocument.PrintRevisions = boolvalue;
     if (this.ActionType == "view")
     {
      this.ObjOffice.SetReadOnly(true,"");
     }
    }

    function TANGER_OCX_RejectAllRevisions()
    {
     this.ObjOffice.ActiveDocument. RejectAllRevisions ();
    }

    function TANGER_OCX_SetReadOnly(boolvalue)
    {
     var i;
     try
     {
      if (boolvalue) this.ObjOffice.IsShowToolMenu = false;
      with(this.ObjOffice.ActiveDocument)
      {
       if (this.ObjOffice.ProgID == "Word.Document") //word
       {
        if ( (ProtectionType != -1) &&  !boolvalue)
        {
         Unprotect();
        }
        if ( (ProtectionType == -1) &&  boolvalue)
        {
         Protect(2,true,"");
        }
       }
       else if(this.ObjOffice.ProgID == "Excel.Sheet")//excel
       {
        for(i=1;i<=Application.Sheets.Count;i++)
        {
         if(boolvalue)
         {
          Application.Sheets(i).Protect("",true,true,true);
         }
         else
         {
          Application.Sheets(i).Unprotect("");
         }
        }
        if(boolvalue)
        {
         Application.ActiveWorkbook.Protect("",true);     
        }
        else
        {
         Application.ActiveWorkbook.Unprotect("");
        }
       }
      }
     }
     catch(err){
      alert("错误:" + err.number + ":" + err.description);
     }
     finally{}
    }

    function TANGER_OCX_PrintDoc(isBackground)
      {
       var oldOption; 
       try
       {
        var objOptions =  this.ObjOffice.ActiveDocument.Application.Options;
        oldOption = objOptions.PrintBackground;
        objOptions.PrintBackground = isBackground;
       }
       catch(err){};      
       TANGER_OCX_ShowRevisions(false);
       TANGER_OCX_SetReadOnly(false,"");
       TANGER_OCX_PrintRevisions(false);
       this.ObjOffice.printout(true);   
       if(this.ActionType=="view")
       {   
        TANGER_OCX_SetReadOnly(true,"");
       }
       else
       {
        TANGER_OCX_ShowRevisions(false,"");
       }   
      }

    // 文件打开后对文档的设置
    function SetAfterOpenFromURL(doc)
    {
     //设置编辑用户
     TANGER_OCX_SetDocUser(this.UserName); 
     TANGER_OCX_ShowRevisions(false); 
     //TANGER_OCX_ShowRevisions(true); 
     
     this.ReadOnly = false;
     if (this.ActionType == "view")
     {
      this.ObjOffice.SetReadOnly(true,'');
      this.ReadOnly = true;
     } 
     if (this.ActionType == "new")
     {
        //加载初始数据
      if (this.FieldXPath_FieldValue.length > 0)
      {
       //设置文档为编辑状态
       TANGER_OCX_unLockAllField();
       //根据FieldXPath、FieldValue设定XPath的初始值
       TANGER_OCX_SetTextAll(this.FieldXPath_FieldValue.toString());
       //设置文档为[启用保护]
       TANGER_OCX_LockAllField();
      }
     }
     if (this.XPath_Editer.length > 0)
     {
      TANGER_OCX_GetEditer_AllField();
     }
    }

     

     
    //设置域值
    function CopyTextToBookMark(BookMarkName,ValueText)
    {
     try
     {
      var bkmkObj = TANGER_OCX_OBJ.ActiveDocument.BookMarks(BookMarkName)
      if(!bkmkObj)
      {
       alert("模板中不存在名称为" + BookMarkName +"的书签!");
      }
      var saverange = bkmkObj.Range;
      saverange.Text= ValueText;
      TANGER_OCX_OBJ.ActiveDocument.Bookmarks.Add(BookMarkName,saverange);
     }
     catch(err)
     {
      alert("错误:" + err.number + ":" + err.description);
     }
     finally
     {}
    }
     

     

     

    展开全文
  • Word文档去除烦人的防复制宏保防功能(word文档宏保护破解技巧)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    Word文档去除烦人的防复制宏保防功能(word文档宏保护破解技巧)

    时下,有些单位传送的Word文档经常喜欢加宏保护,但有时要引用文中内容,却没办法复制,怎办?下面就是破解方法:

     

    word文档宏保护(word文档防复制)破解技巧

    最简单的方法一是:用“微软的矛攻微软的盾”----新建一个word文档,插入待破解的word文档,OK。

    方法二:1.用word把文档另存为网页。

                2.用记事本打开网页文件“编辑——查找”输入“UnprotectPassword”

                  这是关键,“<w:UnprotectPassword> ....... </w:UnprotectPassword>”

                   之间的下划线位置部分就是16进制加密信息了。把他改成“<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 />8个0覆盖原文件。

                   3. 用word打开网页文件,“工具——取消文档保护”即可。

     

    方法三:word为了部分用户的需要,提供了保护功能,即允许察看,但不允许修改。可如果我们忘记了保护密码,该如何办呢?昨天,我在网络上搜索了一下,发现几乎都采用另存为web页的方法,这种方法也可行,但往往破坏文件的原有格式。下面介绍一种不损坏原有格式又可以去除保护的方法: 1. 观察是否受到保护 打开原文件,如果发现很多工具按钮和菜单都是灰色的,那就是受到保护了。 2. 打开受到保护的原文件(如果您怕,最好备份) 打开文件的方法就不用提了。。要不您说:罗嗦! 3. 将文件调入到宏编辑器中 选择“工具”-> “宏”-> “microsoft 脚本编辑器”。等会儿,这个过程稍微慢些... 提醒,如果没安装,那就需要自己安装了哦。。。 4. 去除保护部分的代码 等脚本编辑器出现后,按“ctrl+f”,查询“unprotectpassword”,即取消保护的密码部分。查询到后,将该行删除。 5. 保存修改 点击脚本编辑器中的“保存”按钮(不用我指出吧 ^-^),保存修改。然后关闭脚本编辑器窗口。保存的过程也比较慢,不要急嘛。。。等保存好了,关闭窗口即可。 5. word中取消保护 关闭脚本编辑器后,在word中,选择“工具”-> “取消文档保护”。ok!!!

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • js 导出word 文档 doc docx

    万次阅读 2019-11-11 14:32:27
    在做项目时,要将富文本编辑器,或是html内容 导出为word。 先引入文件保存js <script src="FileSaver.js"></script> 导出为Docx docx体积更小,而且word2007也可以打开 1.引用插件html-docx.js ...

    在做项目时,要将富文本编辑器,或是html内容 导出为word。

    先引入文件保存js

    <script src="FileSaver.js"></script>

    导出为Docx

    docx体积更小,而且word2007也可以打开

    1.引用插件html-docx.js

    <script src="html-docx.js"></script>

    2.构建完整的html内容文档

    var content = '<!DOCTYPE html><html><head><meta charset="UTF-8"></head>'+ 要导出的html信息 +'</html>'

    content要导出的html信息,建议在服务端自己拼接完成。

    若是想从页面抓取html信息,可以用下面的方法(不建议,客户端消耗高

    html:

    <div id="content">
        要导出的html信息
        <img src="xxx">
    </div>
    
    function convertImagesToBase64 (content) {
          var regularImages = content.querySelectorAll("img");
          var canvas = document.createElement('canvas');
          var ctx = canvas.getContext('2d');
          [].forEach.call(regularImages, function (imgElement) {
            // preparing canvas for drawing
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            canvas.width = imgElement.width;
            canvas.height = imgElement.height;
    
            ctx.drawImage(imgElement, 0, 0);
            // by default toDataURL() produces png image, but you can also export to jpeg
            // checkout function's documentation for more details
            var dataURL = canvas.toDataURL();
            imgElement.setAttribute('src', dataURL);
          })
          canvas.remove();
        }
    var content = document.getElementById('#content');
    convertImagesToBase64(content);//转换图片为base64
    
    content = '<!DOCTYPE html><html><head><meta charset="UTF-8"></head>'+ content +'</html>'

    3.利用脚本导出word

     var converted = htmlDocx.asBlob(content);
     saveAs(converted, 'test.docx');// 用 FielSaver.js里的保存方法 进行输出

    导出为Doc

    利用wordjquery 这个

    1.引入jquery和wordexport

    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script src="wordexport.js"></script>

    2.使用导出

    $(元素).wordExport(文件名,isBase64)

    isBase64 用于标识 元素中的图片是否都处理为了base64,默认为false,内置处理方法,可以去看看

    注意

    无论是html-docx.js还是 wordexport.js 都需要将html中的图片转为base64形式

    而且,图片的宽度高,最好自己设置下,否则下载的图片会以图片原始大小下载,就会出现以下,图片在文档超出情况

    处理图片的宽高,可以采用 正则替换,这里给出两种替换参考(平时不太写正则,所以有点挫)

    C#:

    string reg = "<img.*? src=[\"'](.*?)['\"].*?>";
    MatchCollection collections = Regex.Matches(description, reg);
    if (collections.Count > 0)
    {
        foreach (Match match in collections)
        {
            Regex regWidth = new Regex("width\\s*=\\s*\\S+ ");
            if (!regWidth.IsMatch(img))//img 中不存在width 
            {
                //获取其他属性进行替换
                Regex reg1 = new Regex(@"style\s*=(['""\s]?)[^'""]*?\1"); ;
                img = reg1.Replace(img, "width=\"350\" height=\"216\" ");//按黄金比例替换
            }
            else
            {
                Match mathWidth = regWidth.Match(img);
                if (mathWidth.Success)
                {
                    string widh = mathWidth.Value.Substring(7).Substring(0, mathWidth.Value.Substring(7).Length - 2);//width
                    if (int.Parse(widh) > 400) {//原宽超出400
                        Regex regHeight = new Regex(@"height\s*=(['""\s]?)[^'""]*?\1");
                        Match mathHeight = regHeight.Match(img);
                        if (mathHeight.Success)
                        {
                            string height = mathHeight.Value.Substring(8).Substring(0, mathHeight.Value.Substring(8).Length - 1);
                            img = regHeight.Replace(img, "height=\" " + 350 * int.Parse(height) / int.Parse(widh) + "\"");//按比例替换 高
                        }
                        img = regWidth.Replace(img, "width=\"350\"");
                    }
                }
            }
        }
    }

    若是二进制流存储的图片数据,可以通过Bitmp来读取原始大小 ,然后按照原始比例再进行缩放

    //通过二进制流 获取图片原始宽高
    private int[] GetScaleImgSizeByByte(byte[] image)
    {
        MemoryStream stream = new MemoryStream(image);//内存流写入
        Bitmap bmp = new Bitmap(stream);
        int width = 600;//先指定一个固定大小 和word页面边距最大宽差不多
        int height = 600;
        if (bmp.Width > 600)
        {
            height = (int)(width * ((double)bmp.Height / (double)bmp.Width));
        }
        if (height > 600 || bmp.Height > 600)
        {//调完宽后判断高 
            height = 600;
            width = (int)(height / ((double)bmp.Height / (double)bmp.Width));
        }
        return new int[] { width, height };
    }

    js正则替换:

     var str = htmlText.replace(/(<img[^>]*)(\/?>)/gi, function (match, capture) {
         if(match.match(/width\s*?=\s*?([‘"])[\s\S]*?\1/ig)==null)
         match = match.replace(/(<img[^>]*)(\/?>)/gi,"$1 width='350' $2")//没有宽就增加宽
         return match.replace(/style\s*?=\s*?([‘"])[\s\S]*?\1/ig, '').replace(/width\s*?=\s*?([‘"])[\s\S]*?\1/ig ,"width='350'");
    });

     

    展开全文
  • 样式(style)是 Word 中用于快速更改文本格式的功能。...例如,需要将别人传过来的多份 Word 文档进行整合、统一其格式时,他人文档中预设的样式可能会给排版造成混乱和不便。但是,如果一刀切地将其粘贴为纯
  • 教你怎么使用Python对word文档进行操作

    万次阅读 多人点赞 2019-09-18 21:56:16
    使用Python对word文档进行操作 一、安装Python-docx Python-docx是专门针对于word文档的一个模块,只能读取docx 不能读取doc文件。说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ...
  • 同时支持所有流行的Word处理文件格式,并允许将Word文档导出或转换为固定布局文件格式和最常用的图像、多媒体格式。 我们很高兴地告诉大家Aspose.Words for .NET v19.11全新发布啦!此版本添加特征以设...
  • python批量修改word文档页眉页脚

    千次阅读 2020-04-28 17:25:09
    批量修改word文档的页眉和页脚 用到的python模块 pip install pywin32 脚本内容 import os import win32com.client as win32 import pythoncom path = u'D:\需替换' old_name = u'哈哈哈' new_name = u'嘿嘿嘿' err...
  • vba 实现Word文档的批量转换为PDF

    千次阅读 2019-03-04 15:36:02
    '需要转换的word文档的个数 dim total as Integer '定义文件名数组:数组的个数根据需要进行设置 Dim fns(total) As String fns(0) = "d:\doc\1.docx" '..................... fn...
  • poi操作word文档总结

    万次阅读 2014-06-05 17:18:43
    POI分段落生成纯Word动态模板并导入数据 导出数据,可以用word另存为xml格式的ftl文件,变量用${变量名}表示,然后在类中通过 freemarker去替换变量。...后来找到方法可以分段落读入纯word文档。要找到了word基
  • 可不可以先通过Word编写文档,然后通过工具将Word文档转化为Wiki格式文档呢。 网上搜索了一下,发现有这样的转化脚本。 Word2MoinV2.bas 使用时只要: 1.打开Word 2.用Alt+F11打开VBA编辑器 3.在VBA编辑器中 ...
  • 我们只需要把已经创建好的表编写脚本到新查询编辑器窗口,然后复制粘贴中间字段到记事本。然后用CTRL+H对文本进行查找替换,等到文本满足你的要求时,就只剩下一个格式处理。例如id int,中间有空格,我们想让它在...
  • 用C++生成WORD文档

    千次阅读 2012-03-02 14:39:13
    用Visual C++操纵MS Word: http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028697.html MFC/VC++调用word进行报表制作: http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028717.html   其次...
  • Unity创建和修改本地Word文档

    千次阅读 2019-10-10 17:02:03
    最多搞个截图就行了,最近客户突然提出要将实验报告(UGUI,包括图片、按钮、输入框、文字等),这就有点懵,好在经过一段时间的研究,可以在Unity内通过NPOI类库(没听说的可以找度娘问一下)创建和修改Word文档,...
  • 目录 效果图 安装方法 使用方法 效果图 先上效果图 ...手写文章生成脚本,可模仿手写字体。...1.下载脚本地址:...5.将handwriting.vba文件中的内容复制到vbs编辑器中保存...
  • 使用Java + Freemarker 导出word文档

    千次阅读 2018-09-19 13:52:42
    最近的需求,有一个导出单张问卷的功能,导出为word。 网上也有很多资料,基本上来说使用freemarker模板导出的教程居多。但是基本上都是比较简单的导出对于遍历之类的问题一带而过。所以记录下自己的开发过程,以便...
  • 大型文档编辑过程

    2017-04-20 13:54:17
    在进行大型项目文档编写过程中,在缺少在线协作文档...为了减少文档编写过程中的返工和修改,按照以下几个步骤进行,往往会提高工作效率:1、设定word的模板板和样式,制定各级标题的文字大小和样式,段落符号格式以
  • 本文章来自脚本之家,在此对脚本之家网站编辑人员表示由衷的感谢。 读取PDF文件jar引用 1 2 3 4 5 &lt;dependency&gt;  &lt;groupid&gt;org.apache.pdfbox&...
  • 如何一次性选中WORD文档中的所有表格

    万次阅读 多人点赞 2018-12-07 11:44:31
    1 将下面的脚本复制 Sub SelectAllTables()  Dim tempTable As Table   Application.ScreenUpdating = False   '判断文档是否被保护  If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then  Ms....
  • 一般类似oa或者crm等管理系统可能都会遇到需要再线查看word文档的功能,类似百度文库。 记得去年小组中的一个成员负责的项目就需要这个的功能,后面说是实现比较困难,就将就着用chm格式替代了。今天看到网上一遍...
  • 一、前言大家好,又到了办公自动化系列!之前讲过很多基于Excel的数据及样式调整案例,今天分享一个Python操作Word的真实自动化需求实现过程:「使用Python批量修改Word样式...
  • VBA编程一例:解决WORD文档无法显示链接的图像问题

    万次阅读 热门讨论 2011-11-12 21:13:56
    OFFICE的VBA编程功能其实是蛮强大的,而VB的语法简单,学起来也很容易上手,如果做过OLE编程的对OFFICE的对象结构有...昨天遇到的情况是,用Office2007从本地打开带图片的html并另存为word doc文档时,WORD把图像保存
  • Michael CorningMicrosoft Corporation 2002年10月 适用于: Microsoft® Word 2002 Microsoft Visual Studio® .NET摘要:学习如何在 Microsoft Office Visual Basic for Applications (VBA) 程序...Word 文档快速序
  • StarUML配置Word生成文档模板

    千次阅读 2013-09-30 00:52:58
    不同的建模工具配置文档模板的方式和要求,如StarUML使用Word中的批注命令对元素模型进行遍历,而EA则通过RTF标注以及模型目录,相比之下EA的文档生成和模型的目录结构绑定的更紧,如果没有事先规划,更难生成文档。...
  • 其二是作为系统管理员后台登陆,对新闻修改编辑,实时发布,添加新闻栏目,管理注册会员等系统维护功能。整个开发过程首先对系统进行需求分析,接着对系统进行总体设计和详细设计,最后对系统进行功能测
  • unity3d 脚本参考-技术文档

    千次阅读 2013-09-04 22:30:22
    unity3d 脚本参考-技术文档  核心提示:一、脚本概览这是一个关于Unity内部脚本如何工作的简单概览。Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的。在脚本对象内部不同志的函数被特定的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,946
精华内容 9,578
热门标签
关键字:

word文档脚本编辑