实现在asp.net中调用打印功能

导出excel打印     
   private    void    ImageButton1_Click(object    sender,    System.Web.UI.ImageClickEventArgs    e)   
       {   
         Response.Clear();     
         Response.Buffer=    true;     
          
         Response.AppendHeader("Content-Disposition","attachment;filename=Borrow.xls");   
         Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312");   
    
         Response.ContentType    =    "application/ms-excel";   
         this.EnableViewState    =    false;     
          
         System.Globalization.CultureInfo    myCItrad    =    new    System.Globalization.CultureInfo("ZH-CN",true);   
         System.IO.StringWriter    oStringWriter    =    new    System.IO.StringWriter(myCItrad);     
         System.Web.UI.HtmlTextWriter    oHtmlTextWriter    =    new    System.Web.UI.HtmlTextWriter(oStringWriter);     
          
         Table3.RenderControl(oHtmlTextWriter);   
    
         Response.Charset="gb2312";   
         Response.Write(oStringWriter.ToString());   
         Response.End();   
       }   
    
    
   红色为导出文件名和要导出页面中的table   
   首先在网页中添加:     
    
   <OBJECT    id="WebBrowser"    height="0"    width="0"    classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"     
   VIEWASTEXT>     
   </OBJECT>     
    
   然后就可以依次加入功能按钮了:     
    
   <input    οnclick="document.all.WebBrowser.ExecWB(6,1)"    type="button"    value="打印">    <input    οnclick="document.all.WebBrowser.ExecWB(6,6)"    type="button"    value="直接打印">     
   <input    οnclick="document.all.WebBrowser.ExecWB(8,1)"    type="button"    value="页面设置">     
   <input    οnclick="document.all.WebBrowser.ExecWB(7,1)"    type="button"    value="打印预览">&nbsp;<INPUT    type="button"    value="关闭窗口"    οnclick="javascript:window.close()">     
    
   将这两块东西放到<center    class=noprint></center>就不会打印这些按钮了。当然要定义noprint了:     
    
   <style    media="print">.Noprint    {}{    DISPLAY:    none    }</style>只要把不想打印的东西的css设置成noprint就可以了。     
    
   现在就实现了基本的web打印,需要注意的情况如下:     
    
   必须将ie的internet选项的安全设置中对于没有标记为安全的ActiveX控件进行设置成提示或者启用,否则会报错,导致不可用。     
   如果在vs.net编辑环境下编辑该页面,它经常自动的给object添加多余的参数,有了这些东西,打印就会出错,所以要记得最后保存的时候删除它们。     
   为了简便并且达到最好的效果,我们可以在一个页面实现编辑和打印,这时候会需要很多的textbox,我们把它的css设置成.edittext     
   {     
   overflow-y:visible;     
   width:    100%;     
   border-top:    none;     
   border-right:    none;     
   border-bottom:    none;     
   border-left:    none;     
   }就可以实现在打印的时候不显示边框和multiline的textbox不显示滚动条了。     
    
   还有一些小经验就是在设置标格宽度的时候,对于A4纸张,横打用920,竖打用640,效果最好。     
   1、控制"纵打"、    横打”和“页面的边距。     
   (1)<script    defer>     
   function    SetPrintSettings()    {     
    //    --    advanced    features     
    factory.printing.SetMarginMeasure(2)    //    measure    margins    in    inches     
    factory.SetPageRange(false,    1,    3)    //    need    pages    from    1    to    3     
    factory.printing.printer    =    "HP    DeskJet    870C"     
    factory.printing.copies    =    2     
    factory.printing.collate    =    true     
    factory.printing.paperSize    =    "A4"     
    factory.printing.paperSource    =    "Manual    feed"       
    
    //    --    basic    features     
    factory.printing.header    =    "This    is    MeadCo"     
    factory.printing.footer    =    "Advanced    Printing    by    scriptX"     
    factory.printing.portrait    =    false     
    factory.printing.leftMargin    =    1.0     
    factory.printing.topMargin    =    1.0     
    factory.printing.rightMargin    =    1.0     
    factory.printing.bottomMargin    =    1.0     
   }     
   </script>     
    
(2)     
   <script    language="javascript">     
     function    printsetup(){     
     //    打印页面设置     
     wb.execwb(8,1);     
     }     
     function    printpreview(){     
     //    打印页面预览     
            
     wb.execwb(7,1);     
             
            
     }     
    
     function    printit()     
     {     
     if    (confirm(''确定打印吗?''))    {     
     wb.execwb(6,6)     
     }     
     }     
     </script>     
   </head>     
   <body>     
   <OBJECT    classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"     
    
   height=0    id=wb    name=wb    width=0></OBJECT>     
   <input    type=button    name=button_print    value="打印"     
    
   οnclick="javascript:printit()">     
   <input    type=button name=button_setup    value="打印页面设置"     
    
   οnclick="javascript:printsetup();">     
   <input    type=button name=button_show    value="打印预览"     
    
   οnclick="javascript:printpreview();">     
   <input    type=button    name=button_fh    value="关闭"     
    
   οnclick="javascript:window.close();">     
    
   ------------------------------------------------     
   关于这个组件还有其他的用法,列举如下:     
   WebBrowser.ExecWB(1,1)    打开     
   Web.ExecWB(2,1)    关闭现在所有的IE窗口,并打开一个新窗口     
   Web.ExecWB(4,1)    保存网页     
   Web.ExecWB(6,1)    打印     
   Web.ExecWB(7,1)    打印预览     
   Web.ExecWB(8,1)    打印页面设置     
   Web.ExecWB(10,1)    查看页面属性     
   Web.ExecWB(15,1)    好像是撤销,有待确认     
   Web.ExecWB(17,1)    全选     
   Web.ExecWB(22,1)    刷新     
   Web.ExecWB(45,1)    关闭窗体无提示     
    
   2、分页打印     
   <HTML>     
   <HEAD>     
   <STYLE>       
     P    {}{page-break-after:    always}     
   </STYLE>     
   </HEAD>     
   <BODY>     
   <%while    not    rs.eof%>     
   <P><%=rs(0)%></P>     
   <%rs.movenext%>     
   <%wend%>     
   </BODY>     
   </HTML>     
    
   3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号     
   (1)ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉,打印就不出来了。     
   (2)<HTML>     
   <HEAD>     
   <TITLE>    New    Document    </TITLE>     
   <META    NAME="Generator"    CONTENT="EditPlus">     
   <META    NAME="Author"    CONTENT="YC">     
   <script    language="VBscript">     
   dim    hkey_root,hkey_path,hkey_key     
   hkey_root="HKEY_CURRENT_USER"     
   hkey_path="/Software/Microsoft/Internet    Explorer/PageSetup"     
   ''//设置网页打印的页眉页脚为空     
   function    pagesetup_null()     
     on    error    resume    next     
     Set    RegWsh    =    CreateObject("Wscript.Shell")     
     hkey_key="/header"       
     RegWsh.RegWrite    hkey_root+hkey_path+hkey_key,""     
     hkey_key="/footer"     
     RegWsh.RegWrite    hkey_root+hkey_path+hkey_key,""     
   end    function     
   ''//设置网页打印的页眉页脚为默认值     
   function    pagesetup_default()     
     on    error    resume    next     
     Set    RegWsh    =    CreateObject("Wscript.Shell")     
     hkey_key="/header"       
     RegWsh.RegWrite    hkey_root+hkey_path+hkey_key,"&w&b页码,&p/&P"     
     hkey_key="/footer"     
     RegWsh.RegWrite    hkey_root+hkey_path+hkey_key,"&u&b&d"     
   end    function     
   </script>     
   </HEAD>     
    
   <BODY>     
   <br/>     
   <br/>     
   <br/>     
   <br/>     
   <br/>     
   <br/><p    align=center>     
   <input    type="button"    value="清空页码"    οnclick=pagesetup_null()>    <input    type="button"    value="恢复页吗"    οnclick=pagesetup_default()><br/>     
    
   </p>     
   </BODY>     
   </HTML>     
   4、浮动帧打印     
   <script    LANGUAGE=javascript>     
   function    button1_onclick()    {     
     var    odoc=window.iframe1.document;     
     var    r=odoc.body.createTextRange();     
     var    stxt=r.htmlText;     
     alert(stxt)     
     var    pwin=window.open("","print");     
     pwin.document.write(stxt);     
     pwin.print();     
   }     
   </script>     
   4、用FileSystem组件实现WEB应用中的本地特定打印     
   <script    Language=VBscript>     
   function    print_onclick    //打印函数     
   dim    label     
   label=document.printinfo.label.value    //获得HTML页面的数据     
   set    objfs=CreateObject("scripting.FileSystemObject")    //创建FileSystem组件对象的实例     
   set    objprinter=objfs.CreateTextFile    ("LPT1:",true)    //建立与打印机的连接     
   objprinter.Writeline("__________________________________")    //输出打印的内容     
   objprinter.Writeline("|    |")     
   objprinter.Writeline("|    您打印的数据是:"&label&    "    |”)     
   objprinter.Writeline("|    |")     
   objprinter.Writeline("|_________________________________|")     
   objprinter.close    //断开与打印机的连接     
   set    objprinter=nothing     
   set    objfs=nothing    //    关闭FileSystem组件对象     
   end    function     
   </script>     
   服务器端脚本:     
   <%………     
   set    conn=server.CreateObject    ("adodb.connection")     
   conn.Open    "DSN=name;UID=XXXX;PWD=XXXX;"     
   set    rs=server.CreateObject("adodb.recordset")     
   rs.Open(“select    ……”),conn,1,1     
   ……….%>    //与数据库进行交互     
   HTML页面编码:     
   <HTML>     
   ………     
   <FORM    ID=printinfo    NAME="printinfo"    >     
   <INPUT    type="button"    value="打印>>"    id=print    name=print    >    //调用打印函数     
   <INPUT    type=hidden    id=text1    name=label    value=<%=………%>>    //保存服务器端传来的数据     
   ………     
   </HTML>   
    

//打印分页   
    
    
   <p      style="page-break-after:always">page1</p>         
   <p      style="page-break-after:always">page2</p>         
    
      
    
   //设置打印   
     <br    />   
   <object    id="factory"    style="display:none"    viewastext    <br    />   
       classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"    <br    />   
       codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"    <br    />   
   ></object>    <br    />   
   <input    type=button    value=页面设置    οnclick="factory.printing.PageSetup()">    <br    />   
   <input    type=button    value=打印预览    οnclick="factory.printing.Preview()">    <br    />   
       <br    />   
   <script    language=javascript>    <br    />   
   function    window.onload()    <br    />   
   {    <br    />   
         //    --    advanced    features    <br    />   
         factory.printing.SetMarginMeasure(2)    //    measure    margins    in    inches    <br    />   
         factory.printing.SetPageRange(false,    1,    3)    //    need    pages    from    1    to    3    <br    />   
         factory.printing.printer    =    "HP    DeskJet    870C"    <br    />   
         factory.printing.copies    =    2    <br    />   
         factory.printing.collate    =    true    <br    />   
         factory.printing.paperSize    =    "A4"    <br    />   
         factory.printing.paperSource    =    "Manual    feed"    <br    />   
         //    --    basic    features    <br    />   
         factory.printing.header    =    "居左显示&b居中显示&b居右显示页码,第&p页/共&P页"    <br    />   
         factory.printing.footer    =    "(自定义页脚)"    <br    />   
         factory.printing.portrait    =    false    <br    />   
         factory.printing.leftMargin    =    0.75    <br    />   
         factory.printing.topMargin    =    1.5    <br    />   
         factory.printing.rightMargin    =    0.75    <br    />   
         factory.printing.bottomMargin    =    1.5    <br    />   
   }    <br    />   
   function    Print(frame)    {    <br    />   
       factory.printing.Print(true,    frame)    //    print    with    prompt    <br    />   
   }    <br    />   
   </script>    <br    />   
   <input    type=button    value="打印本页"    οnclick="factory.printing.Print(false)">    <br    />   
   <input    type=button    value="页面设置"    οnclick="factory.printing.PageSetup()">    <br    />   
   <input    type=button    value="打印预览"    οnclick="factory.printing.Preview()"><br>    <br    />   
   <a    href="http://www.meadroid.com/scriptx/docs/printdoc.htm?static"      target=_blank>具体使用手册,更多信息,点这里</a>    <br    />   
     [Ctrl+A    全部选择    提示:你可先修改部分代码,再按运行]     
   //自带的打印预览     
    
    
   WebBrowser.ExecWB(1,1)    打开       
   Web.ExecWB(2,1)    关闭现在所有的IE窗口,并打开一个新窗口       
   Web.ExecWB(4,1)    保存网页       
   Web.ExecWB(6,1)    打印       
   Web.ExecWB(7,1)    打印预览       
   Web.ExecWB(8,1)    打印页面设置       
   Web.ExecWB(10,1)    查看页面属性       
   Web.ExecWB(15,1)    好像是撤销,有待确认       
   Web.ExecWB(17,1)    全选       
   Web.ExecWB(22,1)    刷新       
   Web.ExecWB(45,1)    关闭窗体无提示       
   <style    media=print>       
   .Noprint{}{display:none;}<!--用本样式在打印时隐藏非打印项目-->       
   .PageNext{}{page-break-after:    always;}<!--控制分页-->       
   </style>       
   <object      id="WebBrowser"      width=0      height=0      classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">             
   </object>             
        
   <center    class="Noprint"    >     
   <input    type=button    value=打印    οnclick=document.all.WebBrowser.ExecWB(6,1)>       
   <input    type=button    value=直接打印    οnclick=document.all.WebBrowser.ExecWB(6,6)>       
   <input    type=button    value=页面设置    οnclick=document.all.WebBrowser.ExecWB(8,1)>       
   </p>       
   <p>    <input    type=button    value=打印预览    οnclick=document.all.WebBrowser.ExecWB(7,1)>       
   </center>   
    
      
    
    
   //去掉打印时的页眉页脚     
     <br    />   
   <script      language="JavaScript">        <br    />   
   var    HKEY_Root,HKEY_Path,HKEY_Key;    <br    />   
   HKEY_Root="HKEY_CURRENT_USER";    <br    />   
   HKEY_Path="//Software//Microsoft//Internet    Explorer//PageSetup//";    <br    />   
   //设置网页打印的页眉页脚为空    <br    />   
   function    PageSetup_Null()    <br    />   
   {    <br    />   
     try    <br    />   
     {    <br    />   
                     var    Wsh=new    ActiveXObject("WScript.Shell");    <br    />   
       HKEY_Key="header";    <br    />   
       Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");    <br    />   
       HKEY_Key="footer";    <br    />   
       Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");    <br    />   
     }    <br    />   
     catch(e){}    <br    />   
   }    <br    />   
   //设置网页打印的页眉页脚为默认值    <br    />   
   function      PageSetup_Default()    <br    />   
   {        <br    />   
     try    <br    />   
     {    <br    />   
       var    Wsh=new    ActiveXObject("WScript.Shell");    <br    />   
       HKEY_Key="header";    <br    />   
       Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");    <br    />   
       HKEY_Key="footer";    <br    />   
       Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d");    <br    />   
     }    <br    />   
     catch(e){}    <br    />   
   }    <br    />   
   </script>    <br    />   
   <input    type="button"    value="清空页码"    οnclick=PageSetup_Null()>    <br    />   
   <input    type="button"    value="恢复页码"    οnclick=PageSetup_Default()>    <br    />   
     [Ctrl+A    全部选择    提示:你可先修改部分代码,再按运行]     
   //无模式的提示框     
    
    
   function    modelessAlert(Msg)     
   {     
         window.showModelessDialog("javascript:alert(/""+escape(Msg)+"/");window.close();","","status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;");     
  

 

 

http://hi.baidu.com/pengguan/blog/item/a432d91ba837b4fbaf51339b.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值