11.1 Web打印
Web打印是一种常用的打印方式,其使用方法简单、方便、快捷,在浏览网页的同时就可以实现打印的功能。
实例291 调用IE自身的打印功能实现打印
实例说明
通过JavaScript调用IE自身的打印功能实现打印,这种方法比较简单,也是常用的打印方式。使用该方法只须将要打印的页面设计好,再通过JavaScript的window对象的print( )方法调用IE的打印功能即可。运行本实例,单击“打印”超级链接,会弹出打印对话框,如图11.1所示,然后进行相应的设置,并进行打印。
图11.1 调用IE自身的打印功能实现打印
技术要点
本实例主要通过调用window对象的打印方法print()来实现打印功能。
window对象的print()方法的语法格式如下:
window.print();
例如:
<a href="#" onClick="window.print()">打印</a>
实现过程
(1)设计要打印的页面。
(2)调用window对象的打印方法实现打印功能,代码如下:
<a href="#" onClick="window.print()">打印</a>
举一反三
根据本实例,读者可以:
开发打印库存统计报表;
打印校友录中的同学联系方式。
实例292 打印指定框架中的内容
实例说明
在实例292中已经介绍如何通过JavaScript调用IE自身的打印功能实现打印,但是该方法将打印页面中的全部内容,包括“打印”超级链接,有时这是不需要的,本实例将介绍如何通过打印指定框架中的内容实现页面部分内容打印。运行本实例,如图11.2所示,单击“打印”超级链接,会弹出打印对话框,进行相应的设置后,单击“打印”按钮即可对图11.2中的表格内容进行打印。
图11.2 打印指定框架中的内容
技术要点
在实现打印指定框架中内容时,首先需要让要打印的框架获得焦点,然后再调用window对象的print()方法实现打印。
语法:
parent.mainFrame.fcous();
window.print();
参数说明
l mainFrame:表示框架的名称。
实现过程
(1)设计content.htm页面,将要打印的内容放置在该页面中。
(2)设计index.htm页面,在该页面的适当位置添加浮动框架(应用<iframe>标记创建),并将该浮动框架的src属性指定为步骤(1)中创建的content.htm文件,代码如下:
<iframe name="contentFrame" src="content.htm" frameborder="0" width="100%" height="100%"></iframe>
(3)在index.htm页面中添加“打印”超级链接,打印指定浮动框架中的内容,代码如下:
<a href="#" onClick="parent.contentFrame.focus();window.print();">打印</a>
举一反三
根据本实例,读者可以:
开发打印库存盘点报表;
实现在办公自动化系统中加入打印考勤明细表功能。
实例293 利用WebBrowser打印
实例说明
WebBrowser是IE内置的浏览器控件,无须用户下载。它的优点是客户端独立完成打印目标文档的生成,减轻服务器负荷;缺点是源文档的分析操作复杂,并且要对源文档中要打印的内容进行约束。运行本实例,单击“打印预览”超级链接,即可打开“打印预览”对话框,如图11.3所示,单击“打印”超级链接,即可打开打印对话框进行打印。
图11.3 利用WebBrowser打印
技术要点
本实例主要应用IE内置的WebBrowser控件实现,该控件的具体参数如下。
l document.all.WebBrowser.Execwb(7,1):表示打印预览。
l document.all.WebBrowser.Execwb(6,1):表示打印。
l document.all.WebBrowser.Execwb(6,6):表示直接打印。
l document.all.WebBrowser.Execwb(8,1):表示页面设置。
实现过程
(1)建立HTML的Object标签,调用WebBrowser控件,代码如下:
<object id="WebBrowser" classid="ClSID: 8856F 961 -340A -11D0-A96B -00C 04Fd 705A 2" width="0" height="0">
</object>
(2)建立相关的打印超级链接,并调用WebBrowser控件的相应参数实现打印预览、打印等功能。代码如下:
<a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a> <a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a> <a href="#" onClick="document.all.WebBrowser.Execwb(6,6)">直接打印</a> <a href="#" onClick="document.all.WebBrowser.Execwb(8,1)">页面设置</a>
举一反三
根据本实例,读者可以:
实现在网站中打印各种报表功能;
实现在网站中打印单据功能。
实例294 设置页眉页脚
实例说明
在系统默认的情况下,无论是利用IE自身的打印功能进行打印,还是利用IE自带的WebBrowser控件进行打印,在打印的文档顶部和底部会包括页眉和页脚,有时并不需要打印默认的页眉和页脚。本实例将介绍如何清空页眉页脚和恢复页眉页脚。运行本实例,单击“清空页眉页脚”超级链接,即可清空IE默认的页眉页脚,这时再单击“打印预览”超级链接,在打开的“打印预览”窗口中将不显示IE默认的页眉页脚,如图11.4所示,单击“恢复页眉页脚”超级链接即可恢复页眉页脚的显示。
图11.4 设置页眉页脚
技术要点
本实例主要通过WshShell 对象的相关方法实现。WshShell对象是WSH(WSH是Windows Scripting Host的缩写,内嵌于Windows操作系统中的脚本语言工作环境)的内建对象,主要负责程序的本地运行、处理注册表、创建快捷方式、获取系统文件夹信息及处理环境变量等工作。 WshShell 对象的相关方法如表11.1所示。
表11.1 WshShell对象的相关方法
方 法 | 说 明 |
CreateShortcut | 创建并返回WshShortcut对象 |
ExpandEnvironmentStrings | 扩展PROCESS环境变量并返回结果字符串 |
Popup | 显示包含指定消息的消息窗口 |
RegDelete | 从注册表中删除指定的键或值 |
RegRead | 从注册表中返回指定的键或值 |
RegWrite | 在注册表中设置指定的键或值 |
Run | 创建新的进程,该进程用指定的窗口样式执行指定的命令 |
本实例中主要应用了 RegWrite方法,下面将对该方法进行详细介绍。
RegWrite方法用于在注册表中设置指定的键或值,其语法格式如下:
WshShell.RegWrite strName, anyValue, [strType]
参数说明
l strName:用于指定注册表的键或值,若strName以一个反斜杠 (在JavaScript中为//) 结束,则该方法设置键,否则设置值。strName 参数必须以根键名“HKEY_CURRENT_USER”、 “HKEY_LOCAL_MACHINE”、“HKEY_CLASSES_ROOT”、“HKEY_USERS”或 “HKEY_CURRENT_CONFIG”开头。
l AnyValue:用于指定注册表的键或值的值。当strType为REG_SZ或REG_EXPAND_SZ时,RegWrite方法自动将anyValue转换为字符串。若strType为REG_DWORD,则anyValue被转换为整数。若strType为REG_BINARY,则anyValue必须是一个整数。
l StrType:用于指定注册表的键或值的数据类型。RegWrite方法支持的数据类型为REG_SZ、REG_EXPAND_SZ、REG_DWORD和REG_BINARY。其他的数据类型被作为strType传递,RegWrite 返回 E_INVALIDARG。
实现过程
(1)编写自定义JavaScript函数PageSetup_del()和PageSetup_set(),用于实现清空页眉页脚和恢复页眉页脚的功能。具体代码如下:
<script language="JavaScript">
var HKEY_RootPath="HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//PageSetup//";
function PageSetup_del(){ //清空页眉页脚
try{
var WSc=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"");
HKEY_Key="footer";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"");
}catch(e){}
}
function PageSetup_set(){ //恢复页眉页脚
try{
var WSc=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"&w&b页码,&p/&P");
HKEY_Key="footer";
WSc.RegWrite(HKEY_RootPath+HKEY_Key,"&u&b&d");
}catch(e){}
}
</script>
(2)建立HTML的Object标签,调用WebBrowser控件,代码如下:
<object id="WebBrowser" classid="ClSID: 8856F 961 -340A -11D0-A96B -00C 04Fd 705A 2" width="0" height="0">
</object>
(3)创建“清空页眉页脚”和“恢复页眉页脚”的超级链接,并调用自定义函数PageSetup_del()和PageSetup_set()实现相应功能。代码如下:
<a href="#" onClick="PageSetup_del()">清空页眉页脚</a>
<a href="#" onClick="PageSetup_set()"> 恢复页眉页脚 </a>
(4)建立相关的打印超级链接,并调用WebBrowser控件的相应参数实现打印预览、打印等功能。代码如下:
<a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(6,6)">直接打印</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(8,1)">页面设置</a>
举一反三
根据本实例,读者可以:
实现在任何打印页面中添加设置页眉页脚功能;
实现自定义页眉页脚的内容功能。
11.2 利用Word打印报表
Microsoft Word是Microsoft提供的文档处理软件,它在处理、打印文档、资料过程中所显现出来的强大功能是有目共睹的。本节将介绍如何将网页中的数据直接导出到Word中,直接进行打印或处理后再进行打印。
实例295 将页面中的表格导出到Word并打印
实例说明
在开发动态网站时,经常会遇到打印页面中的指定表格的情况,这时可以将要打印的表格导出到Word中,然后再打印。本实例将介绍如何将页面中的订单列表导出到Word并打印。运行本实例,在页面中将显示订单信息列表,单击“打印”超级链接后,将把Web页中的数据导出到Word的新建文档中,如图11.5所示,并保存在Word的默认文档保存路径中,最后调用打印机打印该文档。
技术要点
本实例主要应用JavaScript的ActiveXObject()构造函数创建一个OLE Automation(ActiveX)对象的实例,并应用该实例的相关方法实现。
ActiveXObject()构造函数的一般语法格式如下:
var objectVar = new ActiveXObject(class[, servername]);
参数说明
l objectVar:用于指定引用对象的变量。
l class:用于指定应用程序的名字或包含对象的库,并且指定要创建的对象的类型。采用library.object的语法格式,如“Word.Application”表明要创建的是Word对象。
l servername:可选参数,用于指定包含对象的网络服务器的名字。
图11.5 将页面中的表格导出到Word并打印
说明:每个支持自动化的应用程序都至少提供一种对象类型。例如一个字处理应用程序可能会提供Application对象,Document对象,以及Toolbar对象等。
实现过程
(1)将显示订单信息的表格的id设置为order,因为要打印该表格中的数据。关键代码如下:
<table id="order" width="100%" height="48" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bordercolordark="#CCCCCC" bordercolorlight="#FFFFFF">
(2)编写自定义JavaScript函数outDoc(),用于将Web页面中的订单信息导出到Word中,并进行自动打印,代码如下:
<script language="javascript">
function outDoc(){
var table=document.all.order;
row=table.rows.length;
column=table.rows(1).cells.length;
var wdapp=new ActiveXObject("Word.Application");
wdapp.visible=true;
wddoc=wdapp.Documents.Add(); //添加新的文档
thearray=new Array();
//将页面中表格的内容存放在数组中
for(i=0;i<row;i++){
thearray[i]=new Array();
for(j=0;j<column;j++){
thearray[i][j]=table.rows(i).cells(j).innerHTML;
}
}
var range = wddoc.Range(0,0);
range.Text="订单信息列表"+"/n";
wdapp.Application.Activedocument.Paragraphs.Add(range);
wdapp.Application.Activedocument.Paragraphs.Add();
rngcurrent=wdapp.Application.Activedocument.Paragraphs(3).Range;
var objTable=wddoc.Tables.Add(rngcurrent,row,column) //插入表格
for(i=0;i<row;i++){
for(j=0;j<column;j++){
objTable.Cell(i+1,j+1).Range.Text = thearray[i][j].replace(" ","");
}
}
wdapp.Application.ActiveDocument.SaveAs("orderInfo.doc",0,false,"",true,"",false,false,false,false,false); //保存到Word的默认文档保存路径中
wdapp.Application.Printout(); //自动打印
wdapp=null;
}
</script>
技巧:在Word中查看并修改默认文档保存路径的方法如下,选择“工具”→“选项”选项,在弹出的对话框中选择“文件位置”选项卡,在该选项卡中选中“文档”列表项,单击“更改”按钮,在弹出的对话框中选择默认文档保存路径,连续单击“确定”按钮即可。
(3)通过单击“打印”超级链接调用自定义JavaScript函数outDoc()。关键代码如下:
<a href="#" onClick="outDoc();">打印</a>
举一反三
根据本实例,读者可以:
在企业进销存管理系统中打印各种报表;
将Web页面中的数据自动保存到Word中。
实例296 打开指定的Word文档并打印
实例说明
在制作网站时,有时需要打开指定的Word文档并打印该文档。运行本实例,单击“浏览”按钮,打开“选择文件”对话框,在该对话框中选择要打印的Word文档,单击“打开”按钮,返回到如图11.6所示的“打开指定的Word文档并打印”页面,单击“打开Word并打印”按钮,将调用Word并自动打印选择的文档。
图11.6 打开指定的Word文档并打印
技术要点
实现利用JavaScript打开指定的Word文档并打印的思路如下:
(1)应用JavaScript的ActiveXObject()构造函数创建一个Word.Application对象的实例。
(2)激活刚刚创建的Word.Application对象的实例。
(3)通过Word.Application对象的Documents集合的Open()方法打开指定的Word文档。
(4)调用wdapp.Application.Printout()实现自动打印Word文档。
实现过程
(1)编写打开Word文档的JavaScript自定义函数openWord()。代码如下:
<script language="javascript">
function openWord(filename){
try {
var wrd=new ActiveXObject("word.Application");
wrd.visible=true;
wrd.Documents.Open(filename);
wrd.Application.Printout();
wrd=null;
}
catch(e){}
}
</script>
(2)在页面的适当位置添加一个用于选择文件的文件域,名称为file1,代码如下:
<input name="file1" type="file" class="textarea" id="file1" size="35">
(3)在“打开Word并打印”按钮的onClick事件中调用自定义JavaScript函数openWord(),打开指定的Word文档并打印。关键代码如下。
<input name="Submit2" type="button" class="btn_grey" onClick="openWord(file1.value)"
value="打开Word并打印">
举一反三
根据本实例,读者可以:
打开指定的Word文档修改后再打印。
实例297 在JSP中利用Word自动打印指定格式的会议记录
实例说明
在开发网络应用程序时,有时需要对输入的信息按指定的格式进行打印。例如在办公自动化系统中,录入的会议记录信息就需要按指定的格式打印。本实例将介绍如何在JSP中实现利用Word自动打印指定格式的会议记录。运行本实例,在页面中输入相应的会议信息,单击“Word打印”按钮,即可将录入的会议信息导出到指定的Word文档中,并自动按该文档指定的格式打印。实例运行结果如图11.7所示。
技术要点
在JSP中实现利用Word自动打印指定格式的会议记录的步骤如下。
(1)应用JavaScript的ActiveXObject()构造函数创建一个Word.Application对象的实例。
(2)打开指定的Word文档,这里需要应用JSP的内置对象request的getRequestURL()方法获取模板文档所在路径。
(3) 通过Word.Application对象的Bookmarks集合的相应方法将表单内容写入到指定的Word文档中。
(4)调用wdapp.Application.Printout()实现自动打印Word文档。
实现过程
(1)创建一个Word文档,在该文档中设计好要打印的会议记录的格式,并将其保存到实例根目录下,名称为meetingDot.doc。
图11.7 在JSP中利用Word自动打印指定格式的会议记录
(2)在创建好的Word文档中的指定位置插入书签。插入书签的方法如下:首先选中需要替换的文本,然后选择“插入”→“书签”选项,在打开的对话框中输入书签名,并单击“添加”按钮即可。
(3)在实例主页面中添加用于收集会议信息的表单及表单元素,具体设置如表11.2所示。
表11.2 页面中所涉及的表单元素
名 称 | 元 素 类 型 | 重 要 属 性 | 含 义 |
form1 | form | Method="post" action="" | 表单 |
title | text | size="50" | 会议标题 |
meetingTime | text |
| 会议时间 |
compere | text |
| 主持人 |
attend | text | size="58" | 出席人员 |
content | text |
| 会议内容 |
(4)编写自定义JavaScript函数outDoc(),用于将表单收集的数据导出到Word中,并进行自动打印,代码如下:
<%
//获取模板文档所在的路径
int at=request.getRequestURL().lastIndexOf("/");
String path_part=request.getRequestURL().substring(0,at+1);
%>
<script language="javascript">
function outDoc(){
var wdapp=new ActiveXObject("Word.Application");
wdapp.visible=true;
wddoc=wdapp.Documents.Open("<%=path_part%>meetingDot.doc"); //打开指定的文档
var form=document.all.form1;
title=form.title.value;
meetingTime=form.meetingTime.value;
compere=form.compere.value;
attend=form.attend.value;
content=form.content.value;
//输出会议标题
range =wdapp.ActiveDocument.Bookmarks("title").Range;
range.Text=title;
//输出会议时间
range =wdapp.ActiveDocument.Bookmarks("meetingTime").Range;
range.Text=meetingTime;
//输出会议主持人
range =wdapp.ActiveDocument.Bookmarks("compere").Range;
range.Text=compere;
//输出出席人员
range =wdapp.ActiveDocument.Bookmarks("attend").Range;
range.Text=attend;
//输出会议内容
range =wdapp.ActiveDocument.Bookmarks("content").Range;
range.Text=content;
wddoc.Application.Printout();
wdapp=null;
}
</script>
(5)通过单击“Word打印”按钮调用自定义JavaScript函数outDoc()。关键代码如下:
<input name="Submit" type="button" class="btn_grey" onClick="outDoc()" value="Word打印">
举一反三
根据本实例,读者可以:
在JSP中开发打印客户订单;
在JSP中开发打印各种样式的报表。
实例298 在ASP中利用Word自动打印指定格式的会议记录
实例说明
在开发网络应用程序时,有时需要对输入的信息按指定的格式进行打印。例如在办公自动化系统中,录入的会议记录信息就需要按指定的格式打印。本实例将介绍如何在ASP中实现利用Word自动打印指定格式的会议记录。运行本实例,在页面中输入相应的会议信息,单击“Word打印”按钮,即可将录入的会议信息导出到指定的Word文档中,并自动按该文档指定的格式打印。实例运行结果如图11.8所示。
图11.8 在ASP中利用Word自动打印指定格式的会议记录
技术要点
在ASP中实现利用Word自动打印指定格式的会议记录的步骤如下。
(1)应用JavaScript的ActiveXObject()构造函数创建一个Word.Application对象的实例。
(2)打开指定的Word文档,这里需要应用ASP的内置对象request的ServerVariables()方法获取模板文档所在路径。
(3)通过Word.Application对象的Bookmarks集合的相应方法将表单内容写入到指定的Word文档中。
(4)调用wdapp.Application.Printout()实现自动打印Word文档。
实现过程
(1)创建一个Word文档,在该文档中设计好要打印的会议记录的格式,并将其保存到实例根目录下,名称为meetingDot.doc。
(2)在创建好的Word文档中的指定位置插入书签。插入书签首先选中需要替换的文本,然后选择“插入”→“书签”选项,在打开的对话框中输入书签名,并单击“添加”按钮即可。
(3)在实例主页面中添加用于收集会议信息的表单及表单元素,具体设置如表11.3所示。
表11.3 页面中所涉及的表单元素
名 称 | 元 素 类 型 | 重 要 属 性 | 含 义 |
form1 | form | Method="post" action="" | 表单 |
title | text | size="50" | 会议标题 |
meetingTime | text |
| 会议时间 |
compere | text |
| 主持人 |
attend | text | size="58" | 出席人员 |
content | text |
| 会议内容 |
(4)编写自定义JavaScript函数outDoc(),用于将表单收集的数据导出到Word中,并进行自动打印,代码如下:
<%
'获取模板文档所在的路径
path=mid(request.ServerVariables("URL"),1,InStrRev(request.ServerVariables("URL"),"/"))
path_part="HTTP://"&request.ServerVariables("LOCAL_ADDR")&":"&_
request.ServerVariables("SERVER_PORT")&path&"meetingDot.doc"
%>
<script language="javascript">
function outDoc(){
var wdapp=new ActiveXObject("Word.Application");
wdapp.visible=true;
wddoc=wdapp.Documents.Open("<%=path_part%>"); //打开指定的文档
var form=document.all.form1;
title=form.title.value;
meetingTime=form.meetingTime.value;
compere=form.compere.value;
attend=form.attend.value;
content=form.content.value;
//输出会议标题
range =wdapp.ActiveDocument.Bookmarks("title").Range;
range.Text=title;
//输出会议时间
range =wdapp.ActiveDocument.Bookmarks("meetingTime").Range;
range.Text=meetingTime;
//输出会议主持人
range =wdapp.ActiveDocument.Bookmarks("compere").Range;
range.Text=compere;
//输出出席人员
range =wdapp.ActiveDocument.Bookmarks("attend").Range;
range.Text=attend;
//输出会议内容
range =wdapp.ActiveDocument.Bookmarks("content").Range;
range.Text=content;
wddoc.Application.Printout();
wdapp=null;
}
</script>
(5)通过单击“Word打印”按钮调用自定义JavaScript函数outDoc()。关键代码如下:
<input name="Submit" type="button" class="btn_grey" onClick="outDoc()" value="Word打印">
举一反三
根据本实例,读者可以:
在ASP中开发打印客户订单;
在ASP中开发打印各种样式的报表。
实例299 在PHP中调用Word自动打印指定格式的会议记录
实例说明
在开发网络应用程序时,有时需要对输入的信息按指定的格式进行打印。例如在办公自动化系统中,录入的会议记录信息就需要按指定的格式打印。本实例将介绍如何在PHP中实现调用Word自动打印指定格式的会议记录。运行本实例,在页面中输入相应的会议信息,单击“Word打印”按钮,即可将录入的会议信息导出到指定的Word文档中,并自动按该文档指定的格式打印,本实例运行结果如图11.9所示。
图11.9 在PHP中调用Word自动打印指定格式的会议记录
技术要点
在PHP中实现利用Word自动打印指定格式的会议记录的步骤如下。
(1)应用JavaScript的ActiveXObject()构造函数创建一个Word.Application对象的实例。
(2)打开指定的Word文档,这里需要应用PHP的函数获取模板文档所在路径,代码如下:
$path="http://".$HTTP_HOST.dirname($PHP_SELF)."/meetingDot.doc";
其中,$HTTP_HOST变量用于获取服务器名称,dirname($PHP_SELF)用于获取路径中的路径名。
(3)通过Word.Application对象的Bookmarks集合的相应方法将表单内容写入到指定的Word文档中。
(4)调用wdapp.Application.Printout()实现自动打印Word文档。
实现过程
(1)创建一个Word文档,在该文档中设计好要打印的会议记录的格式,并将其保存到实例根目录下,名称为meetingDot.doc。
(2)在创建好的Word文档中的指定位置插入书签。插入书签首先选中需要替换的文本,然后选择“插入”→“书签”选项,在打开的对话框中输入书签名,并单击“添加”按钮即可。
(3)在实例主页面中添加用于收集会议信息的表单及表单元素,具体设置如表11.4所示。
表11.4 页面中所涉及的表单元素
名 称 | 元 素 类 型 | 重 要 属 性 | 含 义 |
form1 | form | Method="post" action="" | 表单 |
title | text | size="50" | 会议标题 |
meetingTime | text |
| 会议时间 |
compere | text |
| 主持人 |
attend | text | size="58" | 出席人员 |
content | text |
| 会议内容 |
Submit | button | class="btn_grey" onClick="outDoc()" value="Word打印" | “Word打印”按钮 |
(4)利用PHP获取模板文档所在的路径,代码如下:
<?php
//获取模板文档所在的路径
$path="http://".$HTTP_HOST.dirname($PHP_SELF)."/meetingDot.doc";
?>
(5)编写自定义JavaScript函数outDoc(),用于将表单收集的数据导出到Word中,并进行自动打印,代码如下:
<?php
//定义新型字符串
$str=<<<word
<script language="javascript">
function outDoc(){
var wdapp=new ActiveXObject("Word.Application");
wdapp.visible=true;
wddoc=wdapp.Documents.Open("$path"); //打开指定的文档
var form=document.all.form1;
title=form.title.value;
meetingTime=form.meetingTime.value;
compere=form.compere.value;
attend=form.attend.value;
content=form.content.value;
//输出会议标题
range =wdapp.ActiveDocument.Bookmarks("title").Range;
range.Text=title;
//输出会议时间
range =wdapp.ActiveDocument.Bookmarks("meetingTime").Range;
range.Text=meetingTime;
//输出会议主持人
range =wdapp.ActiveDocument.Bookmarks("compere").Range;
range.Text=compere;
//输出出席人员
range =wdapp.ActiveDocument.Bookmarks("attend").Range;
range.Text=attend;
//输出会议内容
range =wdapp.ActiveDocument.Bookmarks("content").Range;
range.Text=content;
wddoc.Application.Printout();
wdapp=null;
}
</script>
word;
echo $str;
?>
(6)通过单击“Word打印”按钮调用自定义JavaScript函数outDoc()。关键代码如下:
<input name="Submit" type="button" class="btn_grey" onClick="outDoc()" value="Word打印">
举一反三
根据本实例,读者可以:
在PHP中开发打印客户订单;
在PHP中开发打印各种样式的报表。
11.3 利用Excel打印报表
Microsoft Excel是Microsoft提供的用于办公管理的应用软件。其强大的表格统计功能是其他同类型软件无法比拟的。本节将介绍如何将Web页中的数据信息导出到Excel中并打印,以提高用户的办公效率。
实例300 将Web页面中的数据导出到Excel
实例说明
为了方便用户操作,有时需要将页面中的数据导出到Excel中进行处理,处理后还可以利用其强大的打印功能实现页面数据的打印。下面将介绍如何将页面中的数据导出到Excel。运行本实例,页面中将显示2007年1月份工资列表,单击“导出到Excel”超级链接,可以将工资列表导出到Excel中(用户可以对导入后的数据进行处理),数据处理后通过Excel自身的打印功能实现数据打印。程序运行结果如图11.10、图11.11所示。
技术要点
本实例主要应用JavaScript的ActiveXObject()构造函数创建一个Excel.Application对象的实例,并应用该实例的相关方法实现。ActiveXObject()构造函数的详细介绍可参见实例295。
图11.10 将Web页面中的数据导出到Excel
图11.11 导出到Excel中的结果
实现过程
(1)将显示工资信息的表格的id设置为wage,因为要将该表格中的数据导出到Excel中。关键代码如下:
<table width="90%" border="0" cellspacing="1" bgcolor="#000000" id="wage">
(2)编写自定义JavaScript函数outExcel(),用于将Web页面中的工资信息列表导出到Excel,代码如下:
<script language="javascript">
function outExcel(){
var table=document.all.wage;
row=table.rows.length;
column=table.rows(1).cells.length;
var excelapp=new ActiveXObject("Excel.Application");
excelapp.visible=true;
objBook=excelapp.Workbooks.Add(); //添加新的工作簿
var objSheet = objBook.ActiveSheet;
title=objSheet.Range("D1").MergeArea; //合并单元格
title.Cells(1,0).Value =doctitle.innerHTML.replace(" ",""); //输出标题
title.Cells(1,1).Font.Size =16;
for(i=1;i<row+1;i++){
for(j=0;j<column;j++){
objSheet.Cells(i+1,j+1).value=table.rows(i-1).cells(j).innerHTML.replace(" ","");
}
}
excelapp.UserControl = true;
}
</script>
(3)通过单击“导出到Excel”超级链接调用自定义JavaScript函数outExcel()。关键代码如下:
<p align="center"><a href="#" onClick="outExcel();">导出到Excel</a></p>
举一反三
根据本实例,读者可以:
开发打印全年的工资报表;
开发打印某部门的工资报表。
实例301 将Web页面中的数据导出到Excel并自动打印
实例说明
在实际项目开发中,经常需要将Web页面中的数据导出到Excel并自动打印。下面将介绍如何将Web页面中的电话费列表导出到Excel中,并保存,同时实现自动打印功能。运行本实例,在页面中将显示电话费列表,单击“打印”超级链接,即可将电话费列表导出到Excel中,并保存到Excel的默认工作目录中,同时自动调用打印机进行打印。实例运行结果如图11.12、图11.13所示。
图11.12 将Web页面中的数据导出到Excel并自动打印
图11.13 导出到Excel中的结果
技术要点
本实例主要通过PrintOut( )方法实现自动打印Excel工作表中的内容。PrintOut( )方法用于打印指定对象。其语法格式如下:
expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)
参数说明
l expression:必选项。用于返回“Chart对象”、“Charts集合对象”、“Range对象”、“Sheets集合对象”、“window对象”、“Workbook对象”、“Worksheet对象”或“Worksheets集合对象”中的某个对象。
l From:可选项。用于指定打印的开始页号。如果省略该参数,将从起始位置开始打印。
l To:可选项。用于指定打印的终止页号。如果省略该参数,将打印至最后一页。
l Copies:可选项。用于指定要打印的份数。如果省略该参数,将只打印一份。
l Preview:可选项。值为true或false,如果为true,则Microsoft Excel打印指定对象之前进行打印预览。如果为false或者省略此参数则立即打印该对象。
l ActivePrinter:可选项。用于设置活动打印机的名称。
l PrintToFile:可选项。值为true或false,如果为true,则打印输出到文件。如果没有指定 PrToFileName,则Microsoft Excel将提示用户输入要输出文件的文件名。
l Collate:可选项。当值为true时,则逐份打印每份副本。
l PrToFileName:可选项。如果将PrintToFile设置为true,则本参数指定要打印到的文件名。
说明:From参数和To参数所描述的“页”指的是要打印的页,并非指定工作表或工作簿中的全部页。
实现过程
(1)将显示电话费信息的表格的id设置为pay,因为要打印此表格中的数据。关键代码如下:
<table width="643" border="0" cellspacing="1" bgcolor="#000000" id="pay">
(2)编写自定义JavaScript函数outExcel(),用于将Web页面中的电话费列表信息导出到Excel,并实现自动打印,代码如下:
<script language="javascript">
function outExcel(){
var table=document.all.pay;
row=table.rows.length;
column=table.rows(1).cells.length;
var excelapp=new ActiveXObject("Excel.Application");
excelapp.visible=true;
objBook=excelapp.Workbooks.Add(); //添加新的工作簿
var objSheet = objBook.ActiveSheet;
for(i=0;i<row;i++){
for(j=0;j<column;j++){
objSheet.Cells(i+1,j+1).value=table.rows(i).cells(j).innerHTML.replace(" ","");
}
}
objBook.SaveAs("payList.xls");
objSheet.Printout; //自动打印
excelapp.UserControl = true;
}
</script>
技巧:在Excel中查看并修改默认文档保存路径的方法如下:选择“工具”→“选项”选项,在弹出的对话框中选择“常规”选项卡,在该选项卡的“默认工作目录”文本中将显示默认的工作目录,读者可以将其修改为其他可用路径。
(3)通过单击“打印”超级链接调用自定义JavaScript函数outExcel()。关键代码如下:
<p align="center"><a href="#" onClick="outExcel();">打印</a></p>
举一反三
根据本实例,读者可以:
利用Excel打印全体学生报表;
利用Excel打印某年级学生报表。
11.4 利用CSS样式打印
利用CSS样式打印是经常使用的一种打印方法,利用它可以非常方便的实现打印页面中的指定内容和分页打印,下面将通过具体实例介绍如何利用CSS样式打印。
实例302 利用CSS样式打印页面中的指定内容
实例说明
普通的Web打印,将会打印页面中的全部内容,但在开发实际网站时,通常只需要打印页面中指定的内容,为了解决该问题,可以应用CSS样式对打印内容进行控制。运行本实例,单击“打印”超级链接即可按用户的设置进行打印。实例运行结果如图11.14、图11.15所示。
图11.14 利用CSS样式打印页面中的指定内容
图11.15 打印预览效果
技巧:在进行Web打印时,可以通过以下操作控制是否打印背景颜色和图像。在IE窗口中,选择“工具”→“Internet选项”选项,在弹出的“Internet选项”对话框中,选择“高级”选项卡,在“设置”列表中设置“打印背景颜色和图像”前面的复选框是否选中,如果选中,代表打印背景颜色和图像,否则不打印背景颜色和图像。
技术要点
本实例主要应用了CSS样式的media类型。下面进行详细介绍。
media类型是CSS属性媒体类型,用于直接引入媒体的属性。其语法格式如下:
@media screen | print | projection | braille | aural | tv | handheld | all
参数说明
l screen:指计算机屏幕。
l print:指用于打印机的不透明介质。
l projection:指用于显示的项目。
l braille:盲文系统,指有触觉效果的印刷品。
l aural:指语音电子合成器。
l tv:电视类型的媒体。
l handheld:指手持式显示设备。
l all:用于所有媒体。
实现过程
(1)编写用于控制指定内容不打印的CSS样式,代码如下:
<style>
@media print{
div{display:none}
.bgnoprint{
background:display:none;
}
.noprint{
display:none
}
}
</style>
(2)为不需要打印的元素设置CSS样式,关键代码如下:
<table width="757" height="174" border="0" align="center"cellpadding="0"
cellspacing="0">
<tr class="noprint">
<td height="133" align="center" valign="top">
<img src="Images/top.jpg" width="757" height="133"></td>
</tr>
…… //此处省略了其他HTML代码,具体代码请参见光盘
举一反三
根据本实例,读者可以:
实现打印库存明细;
实现打印库存数量达到预警线的库存商品信息。
实例303 利用CSS样式分页打印
实例说明
在制作数据打印程序时,对于多页数据(指的是一页纸不能全部打印完毕的数据)通常采用分页打印。这里的分页打印是指在每一页数据的顶端都打印表头信息。下面将通过具体实例介绍如何利用CSS样式实现分页打印。运行本实例,如图11.16所示,单击“打印预览”超级链接,可以查看打印效果,如图11.17所示,单击“打印”超级链接即可进行分页打印。
图11.16 利用CSS样式分页打印
图11.17 打印预览效果
技术要点
本实例主要应用了thead标记、tfoot标记和page-break-after属性。下面进行详细介绍。
(1)thead标记
thead用于设置表格的表头。
(2)tfoot标记
tfoot用于设置表格的表尾。
(3)page-break-after属性
page-break-after属性在打印文档时发生作用,用于进行分页打印。但是对于<br>和<hr>对象不起作用。
语法:
page-break-after:auto | always | avoid | left | right | null
参数说明
l page-break:打印时在样式控制的对象前后换页。
l after:设置对象后出现页分割符。设置为always时,始终在对象之后插入页分割符。
l auto:在对象之后自动插入页分割符。
l always:始终在对象之后插入页分割符。
l avoid:未支持。避免在对象后面插入分割符。
l left:未支持。在对象后面插入页分割符,直到它到达一个空白的左页边。
l right:未支持。在对象后面插入页分割符,直到它到达一个空白的右页边。
l null:空白字符串。取消了分割符设置。
实现过程
(1)在要打印的页面中添加用于显示客户信息的表格,并设置好表头、表尾及打印分页,关键代码如下:
<table width="650" border="1" cellpadding="0" align="center" cellspacing="0"
bgcolor="#FE7529" id="pay" bordercolor="#FE7529" bordercolordark="#FE7529"
bordercolorlight="#FFFFFF" style="border-bottom-style:none;">
<!--设置表头-->
<thead style="display:table-header-group;font-weight:bold">
<tr align="center" bgcolor="#FE7529">
<td width="155" height="30">客户名称</td>
<td width="99">电话</td>
<td width="59" >联系人</td>
<td width="84">联系人电话</td>
<td width="175">E-mail</td>
<td width="64">所在地区</td>
</tr>
</thead>
<tr>
<td height="30" bgcolor="#FFFFFF">采虹**集团</td>
<td width="99">电话</td>
<td width="59" >联系人</td>
<td width="84">联系人电话</td>
<td width="175">E-mail</td>
<td width="64">所在地区</td>
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF">吉林省明日科技有限公司</td>
…… //此处省略了显示客户其他信息的HTML代码
</tr>
<tr>
<!--控制分页-->
<td height="30" bgcolor="#FFFFFF" style="page-break-after:always">鑫***有限公司</td>
…… //此处省略了显示客户其他信息的HTML代码
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF">东西南北***通讯公司</td>
…… //此处省略了显示客户其他信息的HTML代码
</tr>
<tr>
<td height="30" bgcolor="#FFFFFF">明*有限责任公司</td>
…… //此处省略了显示客户其他信息的HTML代码
</tr>
<!--设置表尾-->
<tfoot style="display:table-footer-group; border:none;"><tr><td></td></tr></tfoot>
</table>
(2)控制“打印”和“打印预览”超级链接在打印时不显示。关键代码如下:
<style>
@media print{
.noprint{display:none}
}
</style>
<table width="647" align="center" class="noprint">
<tr align="center" bgcolor="#FFFFFF">
<td height="27" colspan="3" align="right">
<a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(8,1)"></a> </td>
</tr>
</table>
举一反三
根据本实例,读者可以:
实现打印库存明细;
实现打印库存数量达到预警线的库存商品信息。
11.5 套打邮寄产品单
在程序中加入打印邮寄产品单的功能,不但可以使用户非常方便的操作程序、提高工作效率,而且更能使程序适应人性化的潮流。下面通过几个实例介绍应用WebBrowse+CSS套打邮寄产品单的方法。
实例304 打印汇款单
实例说明
在开发办公自动化等系统时,可能会遇到汇款单打印的情况,这时就需要在系统中加入该功能。本实例将介绍如何实现打印汇款单的功能。运行本程序,在页面中将显示要打印的汇款单及与打印相关的超级链接,如图11.18所示,单击“打印”超级链接可以打印该汇款单,单击“打印预览”超级链接可以预览打印结果,如图11.19所示。
图11.18 打印汇款单页面运行结果
图11.19 打印预览效果
技术要点
本实例主要通过CSS样式的media类型属性设置不打印表格背景,及调用WebBrowser控件实现汇款单的打印。关于CSS样式的media类型属性的详细介绍可参见实例302,WebBrowser控件的详细介绍可参见实例293。
实现过程
(1)在页面中插入一个表格,将该表格的背景设置为空的汇款单图片,并在表格中插入新的表格用于在指定位置显示汇款信息。
(2)在页面的指定位置填写汇款信息。
(3)在页面的相应位置加入“打印预览”、“打印”、“直接打印”、“页面设置”超级链接。关键代码如下:
<div>
<table width="81" height="111" border="0" align="center" cellpadding="0" cellspacing="0">
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a></td>
</tr>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a></td>
</tr>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(6,6)">直接打印</a></td>
</tr>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(8,1)">页面设置</a> </td>
</tr>
</table>
</div>
(4)应用CSS样式控制表格背景及打印等超级链接在打印时不显示,代码如下:
<style>
@media print{
div{display:none}
td,table{
background:display:none;
}
}
</style>
举一反三
根据本实例,读者可以:
实现网站中的打印汇款单模块;
实现办公自动化管理系统中的打印汇款单模块。
实例305 打印快递单
实例说明
在开发物流网站时,经常会遇到打印快递单的情况。本实例将介绍如何实现打印快递单。运行本实例,在页面中将显示要打印的快递单及与打印相关的超级链接,如图11.20所示,单击“打印”超级链接可以打印该快递单,单击“打印预览”超级链接可以预览打印结果,如图11.21所示。
图11.20 打印快递单页面运行结果
图11.21 打印预览效果
技术要点
本实例主要通过CSS样式的media类型属性设置不打印表格背景,及调用WebBrowser控件实现快递单的打印。关于CSS样式的media类型属性的详细介绍可参见实例302,WebBrowser控件的详细介绍可参见实例293。
实现过程
(1)在页面中插入一个表格,将该表格的背景设置为空的快递单图片,并在表格中插入新的表格用于在指定位置显示快递信息。
(2)在页面的指定位置填写快递信息。
(3)在页面的相应位置加入“打印预览”、“打印”、“直接打印”、“页面设置”超级链接。关键代码如下:
<div>
<table width="81" height="111" border="0" align="center" cellpadding="0" cellspacing="0">
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a></td>
</tr>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a></td>
</tr>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(6,6)">直接打印</a></td>
</tr>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="3"><a href="#" onClick="document.all.WebBrowser.Execwb(8,1)">页面设置</a> </td>
</tr>
</table>
</div>
(4)应用CSS样式控制表格背景及打印等超级链接在打印时不显示,代码如下;
<style>
@media print{
div{display:none}
td,table{
background:display:none;
}
}
</style>
举一反三
根据本实例,读者可以:
实现话费缴费单模块;
实现存款单模块。
实例306 打印信封
实例说明
在报社或电台日常业务中,最频繁的工作就是给客户或听众发信,如果每一封信都手工填写,不仅会降低工作效率,而且容易出现错误,为了解决该问题,可以在网页中加入打印信封的功能。运行本实例,在页面中将显示要打印的信封及与打印相关的超级链接,如图11.22所示,单击“打印”超级链接可以在信封的指定位置打印相关内容,单击“打印预览”超级链接可以预览打印结果,如图11.23所示。
图11.22 打印信封页面运行结果
图11.23 打印预览效果
技术要点
本实例主要通过CSS样式的media类型属性设置不打印表格背景,及调用WebBrowser控件实现信封的打印。关于CSS样式的media类型属性的详细介绍可参见实例302,WebBrowser控件的详细介绍可参见实例293。
实现过程
(1)在页面中插入一个表格,该表格的尺寸和一个标准的信封大小相同,并在表格中插入新的表格用于在指定位置显示收信人和发信人信息。
(2)在页面的指定位置填写收信人和发信人信息。
(3)在页面的底部加入“打印预览”、“打印”、“直接打印”、“页面设置”超级链接。关键代码如下:
<div align="center">
<table width="542" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center"><a href="#" onClick="document.all.WebBrowser.Execwb(7,1)">打印预览</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(6,1)">打印</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(6,6)">直接打印</a>
<a href="#" onClick="document.all.WebBrowser.Execwb(8,1)">页面设置</a></div></td>
</tr>
</table>
</div>
(4)应用CSS样式控制表格背景及打印等超级链接在打印时不显示,代码如下:
<style>
@media print{
div{display:none}
td,table{
background:display:none;
}
}
</style>
举一反三
根据本实例,读者可以:
实现批量打印信封。