脚本打印

 

11.1  Web打印

Web打印是一种常用的打印方式,其使用方法简单、方便、快捷,在浏览网页的同时就可以实现打印的功能。

实例291   调用IE自身的打印功能实现打印

实例说明

通过JavaScript调用IE自身的打印功能实现打印,这种方法比较简单,也是常用的打印方式。使用该方法只须将要打印的页面设计好,再通过JavaScriptwindow对象的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打印

实例说明

WebBrowserIE内置的浏览器控件,无须用户下载。它的优点是客户端独立完成打印目标文档的生成,减轻服务器负荷;缺点是源文档的分析操作复杂,并且要对源文档中要打印的内容进行约束。运行本实例,单击打印预览超级链接,即可打开打印预览对话框,如图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)建立HTMLObject标签,调用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对象是WSHWSHWindows 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:用于指定注册表的键或值的值。当strTypeREG_SZREG_EXPAND_SZ时,RegWrite方法自动将anyValue转换为字符串。若strTypeREG_DWORD,则anyValue被转换为整数。若strTypeREG_BINARY,则anyValue必须是一个整数。

l     StrType:用于指定注册表的键或值的数据类型。RegWrite方法支持的数据类型为REG_SZREG_EXPAND_SZREG_DWORDREG_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)建立HTMLObject标签,调用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 WordMicrosoft提供的文档处理软件,它在处理、打印文档、资料过程中所显现出来的强大功能是有目共睹的。本节将介绍如何将网页中的数据直接导出到Word中,直接进行打印或处理后再进行打印。

实例295   将页面中的表格导出到Word并打印

实例说明

在开发动态网站时,经常会遇到打印页面中的指定表格的情况,这时可以将要打印的表格导出到Word中,然后再打印。本实例将介绍如何将页面中的订单列表导出到Word并打印。运行本实例,在页面中将显示订单信息列表,单击打印超级链接后,将把Web页中的数据导出到Word的新建文档中,如图11.5所示,并保存在Word的默认文档保存路径中,最后调用打印机打印该文档。

技术要点

本实例主要应用JavaScriptActiveXObject()构造函数创建一个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("&nbsp;","");

   }

}

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)应用JavaScriptActiveXObject()构造函数创建一个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)应用JavaScriptActiveXObject()构造函数创建一个Word.Application对象的实例。

2)打开指定的Word文档,这里需要应用JSP的内置对象requestgetRequestURL()方法获取模板文档所在路径。

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)应用JavaScriptActiveXObject()构造函数创建一个Word.Application对象的实例。

2)打开指定的Word文档,这里需要应用ASP的内置对象requestServerVariables()方法获取模板文档所在路径。

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)应用JavaScriptActiveXObject()构造函数创建一个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 ExcelMicrosoft提供的用于办公管理的应用软件。其强大的表格统计功能是其他同类型软件无法比拟的。本节将介绍如何将Web页中的数据信息导出到Excel中并打印,以提高用户的办公效率。

实例300   Web页面中的数据导出到Excel

实例说明

为了方便用户操作,有时需要将页面中的数据导出到Excel中进行处理,处理后还可以利用其强大的打印功能实现页面数据的打印。下面将介绍如何将页面中的数据导出到Excel。运行本实例,页面中将显示20071月份工资列表,单击导出到Excel”超级链接,可以将工资列表导出到Excel中(用户可以对导入后的数据进行处理),数据处理后通过Excel自身的打印功能实现数据打印。程序运行结果如图11.10、图11.11所示。

技术要点

本实例主要应用JavaScriptActiveXObject()构造函数创建一个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("&nbsp;","");  //输出标题

   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("&nbsp;","");

      }

   }

   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:可选项。值为truefalse,如果为true,则Microsoft Excel打印指定对象之前进行打印预览。如果为false或者省略此参数则立即打印该对象。

l     ActivePrinter:可选项。用于设置活动打印机的名称。

l     PrintToFile:可选项。值为truefalse,如果为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("&nbsp;","");

      }

   }

        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属性。下面进行详细介绍。

1thead标记

thead用于设置表格的表头。

2tfoot标记

tfoot用于设置表格的表尾。

3page-break-after属性

page-break-after属性在打印文档时发生作用,用于进行分页打印。但是对于<br><hr>对象不起作用。

语法:

page-break-afterauto | 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类型属性的详细介绍可参见实例302WebBrowser控件的详细介绍可参见实例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类型属性的详细介绍可参见实例302WebBrowser控件的详细介绍可参见实例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类型属性的详细介绍可参见实例302WebBrowser控件的详细介绍可参见实例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>

举一反三

根据本实例,读者可以:

  实现批量打印信封。

控件功能强大,却简单易用,所有调用如同JavaScript扩展语句, 主要接口函数如下: PRINT_INIT 打印初始化 SET_PRINT_PAGESIZE 设定纸张大小 ADD_PRINT_HTM 增加超文本项 ADD_PRINT_TEXT 增加纯文本项 ADD_PRINT_TABLE 增加表格项 ADD_PRINT_SHAPE 画图形 SET_PRINT_STYLE 设置对象风格 PREVIEW 打印预览 PRINT 直接打印 PRINT_SETUP 打印维护 PRINT_DESIGN 打印设计 ... 样例清单 1.如何在页面内嵌入控件见样例一 2.如何选材打印当前页面内容见样例二 3.如何用代码生成打印页见样例三 4.如何打印设计和定位套打见样例四 5.如何控制纸张大小和连续打印见样例五 6.如何输出多页长文档及双面打印见样例六 7.如何定向输出见样例七 8.如何打印图片见样例八 9.如何用程序加载打印维护背景图见样例九 10.如何控制打印样式(STYLE)见样例十 11.如何直接打印条形码见样例十一 12.如何读写本地文件见样例十二 13.如何打印旋转内容见样例十三 14.如何按URL打印见样例十四 15.如何打印表格的页头页尾见样例十五 16.如何设置预览窗口大小见样例十六 17.如何发打印机指令或直接读写端口见样例十七 18.如何打印幅面高度不固定的票据见样例十八 19.如何内嵌显示及预览时包含背景图见样例十九 20.如何强制分页并预览多页卡片见样例二十 21.如何控制打印维护的功能权限见样例二十一 22.如何构建自己的纯WEB打印预览见样例二十二 23.如何居中打印超文本见样例二十三 24.如何选择界面皮肤见样例二十四 25.如何指定输出到哪页或仅预览见样例二十五 26.如何提高多页打印的性能见样例二十六 27.如何导出数据到Excel文件见样例二十七 28.如何快速读取客户端系统信息见样例二十八 29.如何使用其它长度单位见样例二十九 30.如何分页输出页面内容见样例三十 31.如何打印表格的分页小计或合计见样例三十一 32.如何实现清晰的图表打印见样例三十二 33.如何实现甘特图等的图表打印见样例三十三 34.如何使用百分比%和满页打印见样例三十四 35.如何获得打印结果和程序代码见样例三十五 36.如何在设计过程中用js编辑内容见样例三十六 37.如何打印公章效果图见样例三十七 38.如何用BASE64编码输出图片见样例三十八 39.如何打印田字格、上划线等文本见样例三十九 40.如何进行数据格式转换见样例四十 41.如何把内容关联后按顺序打印见样例四十一 42.如何把整页内容缩放打印见样例四十二 43.如何分页打印综合表格见样例四十三 44.如何缩放打印单个超文本内容见样例四十四 45.如何获得打印状态及最终结果见样例四十五 46.如何设置右边距和下边距见样例四十六
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值