替换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);