在一的基础上,将需要打印的表格复杂一点,主要是中间有一个列表,将会根据需要增加行数,但是其上下则有相对固定的信息。
打印模板如下:
报名单位的列表已经设定了15行,但是投标单位多于15家,那么就得相应的增加行,为了处理方便,需要将这个列表的某一行复制出来,并添加进去,而且应该在、并且只能在某个地方添加进去,所以这里是需要注意的。
最终实现的效果如下:
最后,是实现的代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
<title>用WORD打印代替WEB打印(二)</title>
<link type="text/css" rel="stylesheet" href="global.css" />
<SCRIPT LANGUAGE=javascript FOR=WebOffice1 EVENT=NotifyCtrlReady>
<!--
WebOffice1_NotifyCtrlReady(); // 在装载完Weboffice(执行<object>...</object>)控件后执行 "WebOffice1_NotifyCtrlReady"方法
//-->
</SCRIPT>
<script language="javascript">
function WebOffice1_NotifyCtrlReady() {
var obj=document.getElementById("WebOffice1");
obj.LoadOriginalFile("/templates/04-builder-lock.doc", "doc"); //下载模板
if(obj.is2007==1)
obj.HideMenuArea("hideall","","",""); //隐藏所有菜单
else
obj.HideMenuArea("","","",""); //隐藏所有菜单
obj.HideMenuItem(0x01+0x02+0x04+0x4000);//隐藏TOOLBAR中的一些按钮
obj.OptionFlag |= 0x0080; //打开WROD下载进度条
obj.SetTrackRevisions(0); //不记录修订信息
initContent(obj);//初始化文档内容
obj.ProtectDoc(1,1,"123"); //保护WORD文档,不允许修改
}
function initContent(obj){
//获得WORD中的表格句柄
var table=obj.GetDocumentObject().tables(1);
/**
*注意obj.ReplaceText("[GCBH]","20120721001",1);这个代码可以直接替换WORD模板中的[GCBH]字符
*但是如果内容太多,这个方法会失效
*这时,可以使用 table.Cell(1,1).range.Text="20120721001";
*注意table的Cell值是从1开始的;table.Cell(行,列);
*/
obj.ReplaceText("[GCBH]","20120721001",1);
obj.ReplaceText("[DATE]","2012-07-21",1);
obj.ReplaceText("[GCMC]","惠民楼工程A、B、C座大楼",1);
obj.ReplaceText("[JSDW]","建设单位--亚洲中国众夏建设工程有限公司",1);
obj.ReplaceText("[DLJG]","代理机构XXXXXXXXX",1);
obj.ReplaceText("[CXR]","查询人X",1);
obj.ReplaceText("[JGBMRY]","监督部门人员X",1);
obj.ReplaceText("[JYZXRY]","交易中心人员X",1);
obj.ReplaceText("[CXSJ]","查询时间X",1);
//投标单位名称列表增加行
var n=16;//在中间的列表中插入13行数据,因为模板中已经有了15行,所以需要插入一行
var r=15;
if(n>r){ //为了适应更多需要,这里不知直接插入一行,而是根据实际需要,增加多少行
for(var i=0;i<n-r;i++){
var rg=table.Cell(6,1).range; //选择列表中的第一行
table.rows.add(rg);//然后在这一行前面插入行
}
}
//为投标单位名称表格赋值,这模板是在第六行开始的
for(var i=1;i<=n;i++){
table.Cell(6+(i-1),1).range.Text=i;
table.Cell(6+(i-1),2).range.Text="投标单位名称"+i;
table.Cell(6+(i-1),3).range.Text="建造师名称"+i;
table.Cell(6+(i-1),4).range.Text="注册号"+i;
table.Cell(6+(i-1),5).range.Text="锁定状态"+i;
table.Cell(6+(i-1),6).range.Text="备注"+i;
}
}
</script>
</head>
<body>
<!-- ------------=== 装载Weboffice控件,如果没安装提示下载 ===-------------------- -->
<script src="js/LoadWebOffice.js"></script>
<!-- ---------------------------=== 结束 ===----------------------------------- -->
</body>
</html>