替换word书签生产报表

替换word书签生产报表,支持文本和图片书签替换
var rootPath;
var WordApp = function(url,templateFile){ 
	rootPath = url;
	var wordObj = null;
	try{  
		wordObj = new ActiveXObject("Word.Application");   
	}catch(e)  
	{  
		alert("要打开该报表,您必须安装word软件,同时IE浏览器须启用ActiveX控件。");  
		return;  
	} 
	
//	if(wordObj==null){ 
//	  alert( "要打开该报表,您必须安装word软件,同时浏览器须启用ActiveX控件,您的浏览器须允许执行控件。"); 
//	  return ;
//	}   
	wordObj.visible=false; 
	this.wordObj = wordObj; 
	
	this.docObj = this.wordObj.Documents.Open(rootPath + templateFile);
	
} 

WordApp.prototype.closeApp = function(){ 
	if (this.wordObj !=null){ 
	   this.wordObj.Quit(); 
	} 
} 

WordApp.prototype.replaceBookmark = function(strName,content,type){ 
	if (this.wordObj.ActiveDocument.BookMarks.Exists(strName)) { 
	  if (type != null && type == "pic") {//图片 
	            var objDoc = this.wordObj.ActiveDocument.BookMarks(strName).Range.Select(); 
	            var objSelection = this.wordObj.Selection; 
	            objSelection.TypeParagraph(); 
	           
	            var objShape = objSelection.InlineShapes.AddPicture(rootPath+content); 
	  } 
	  else {
		  
	   this.wordObj.ActiveDocument.BookMarks(strName).Range.Select(); 
	   this.wordObj.Application.selection.Text = content; 
	  } 
	}else{ 
	  //alert("标签不存在"); 
	} 
}
/**
 * 替换文本书签
 * @param {Object} bookmarkName//书签名
 * @param {Object} content//替换内容
 * @memberOf {TypeName} 
 */
WordApp.prototype.replaceTextBookmark = function(bookmarkName,content){ 
	   this.replaceBookmark(bookmarkName,content,null); 
} 

/**
 * 替换图片书签
 * @param {Object} bookmarkName//书签名
 * @param {Object} pictureFile//图片文件路径
 * @memberOf {TypeName} 
 */
WordApp.prototype.replacePictureBookmark = function(bookmarkName,pictureFile){ 
	   this.replaceBookmark(bookmarkName,pictureFile,"pic"); 
} 

/**
 * 自动生成表格
 * 
 * @param {Object} bookmark //表格位置的书签
 * 
 * @param {Object} titles //表格的标题
 * titles 的格式: [{"name":"姓名","key":"name","width":10},{"name":"Id","key":"id","width":20},{"name":"部门","key":"department","width":30},{"name":"姓名1","key":"name","width":10},{"name":"姓名2","key":"name","width":10}];
 * 
 * @param {Object} datas //表格的数据
 * datas的格式:  {"items":[
 *	{"id":"1926056","department":"A906449D5769FA7361D7ECC6AA3F6D28","name":"n1"},
 *	{"id":"1934316","department":"A906449D5769FA7361D7ECC6AA3F6D28","name":"n2"},
 *	]}
 * @memberOf {TypeName} 
 */
WordApp.prototype.replaceTableBookmark = function(bookmark, titles, datas) {
	var items = datas.items;
	var row = items.length + 1;
	var col = titles.length;
	var objDoc = this.wordObj.ActiveDocument.BookMarks(bookmark).Range;
	var objTable = this.docObj.Tables.Add(objDoc, row, col);//插入表格 

	for ( var i = 1; i <= col; i++) {

		objTable.Cell(1, i).Range.InsertAfter(titles[i - 1].name);
		objTable.Rows(1).Cells(i).Shading.Texture = 200;
		//        var width = titles[i-1].width;
		//	    if(width.indexOf("px")!=-1){ 
		//	     objTable.Cell(1,i).Width = (width.substr(0,width.length-2)/100)*28.35;//1厘米=28.35磅 
		//	    }

	}

	for ( var i = 2; i <= row; i++) {
		for ( var j = 1; j <= col; j++) {

			objTable.Cell(i, j).Range
					.InsertAfter(items[i - 2][titles[j - 1]["key"]]);

		}

		objTable.Borders.InsideLineStyle = 1;
		objTable.Borders.OutsideLineStyle = true;

	}
}




列子:

 var word = new WordApp('<%=basePath %>',"/word/template/template.docx"); 
 word.wordObj.visible=true;
 word.replacePictureBookmark("img","/word/image/1.jpg");
word.replaceTextBookmark("str","本周马鞍山、滁州、宿“);
var titles=[{"name":"名称","key":""name"},{"name":"地址","key":""address"}];
var datas={"items":[{"name":"admim","address":"南京"},{"name":"test","address":"北京"}]}
word.replaceTableBookmark("table",titles,datas);



你可能感兴趣的:(浏览器,prototype,IE,J#)