var controlObj; var reg=new RegExp("\{(.*?)_0_(.*?)\}","gi"); /** * 填充主表数据 * @param main */ function initMainTable(main){ controlObj = OfficePlugin.officeObjs[0].controlObj; var bookMarks = controlObj.ActiveDocument.BookMarks; var bookMarkCount = bookMarks.Count; for(var i=1;i<=bookMarks.Count;i++){ var item = bookMarks.Item(i); var name = item.Name; if(name.indexOf('_0_')>0) continue; name = name.split('_1_')[0]; var nameValue = main[name]; if(nameValue==undefined || nameValue==null) continue; var currentRange = item.Range; currentRange.Text = nameValue ? nameValue : ''; i--;// 因替换了一个书签,所以需要减一,否则bookMarks.Item(i)会取不到后面的书签 } } /** * 填充子表。 * @param subTables */ function fillSubtables(subTables){ //读取表的元数据 var aryTableMeta=getMetaData(); var tables = controlObj.ActiveDocument.Tables; //得到tables for(var i=0;i-1) ; //_0_ } function handTableMeta(aryTableMeta){ //splice for(var i=aryTableMeta.length-1;i>=0;i--){ var tableMeta=aryTableMeta[i]; validTable(tableMeta); var isValid=tableMeta.isValid; if(!isValid){ //删除无效元数据 aryTableMeta.splice(i,1); } } } /** * 验证表的元数据。 * @param tableMeta */ function validTable(tableMeta){ var aryCol=tableMeta.tbColMap; var rowMetaData={}; var isValid=false; for(var i=0;i