• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET打印、导出【转载】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我是菜鸟,我是新手。前几天写程序时,应客户要求加上打印和数据导出功能,在过去从未做过类似的,就在网上搜了一搜,结果云云,方法云云。试过好多都要出错。于是乎,拿过来好几个,相比对照之下,终于弄出来了,记录下来,以后会用得着,也给予同我一样的新手借鉴。

导出功能,还是并非我最想要的(怎么能把浏览器下载那个提示框取消了,就如同保存图片一样),有高手路过,请指点一二......

 

 

************导出GridView数据************

 

1、页面中添加:

<asp:LinkButton ID="lbtn_Excel" runat="server" OnClick="lbtn_Excel_Click"><img src="../icon/excel.jpg" height="20" align="absmiddle" border="0" />导出</asp:LinkButton>

 

2、后置代码,lbtn_Excel_Click方法:

    protected void lbtn_Excel_Click(object sender, EventArgs e)     {         string FileName = "MateOutList(" + DateTime.Now.ToShortDateString()+"_"          +DateTime.Now.ToShortTimeString() + ").xls";         //导出Excel         Response.Clear();         Response.AddHeader("content-disposition", "attachment;filename=" + FileName);         Response.Charset="GB2312";         Response.ContentType="application/vnd.xls";         Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");         System.IO.StringWriter strW=new System.IO.StringWriter();         System.Web.UI.HtmlTextWriter htmlTW=new HtmlTextWriter(strW);         //GridView去样式         System.Drawing.Color oldbackcolor = gv_Excel.HeaderStyle.BackColor;         System.Drawing.Color oldforecolor = gv_Excel.HeaderStyle.ForeColor;

 

        GridView1.RenderControl(htmlTW);         Response.Write(strW.ToString());         Response.End();     }

 

 

3、切记重写 VerifyRenderingInServerForm方法

 

    public override void VerifyRenderingInServerForm(Control control)     {         // Confirms that an HtmlForm control is rendered for     }

 

 

4、如果LinkButton是在UpdatePanel<ContentTemplate></ContentTemplate>之间,切记在触发器中写上去<asp:PostBackTrigger ControlID="lbtn_Excel" />,如:

 

    <Triggers>          <asp:PostBackTrigger ControlID="lbtn_Excel" />     </Triggers>

 

 

 

*************OK,原来导出就是如此简单。

 

 

 

**********打印************

1、页面添加:

<asp:LinkButton ID="lbtn_Print" runat="server" OnClientClick="return PintPage();"><img src="../icon/print.jpg" height="20" align="absmiddle" border="0" />打印</asp:LinkButton>

 

<script language="javascript" type="text/javascript">

function PintPage() {

      //指向打印页面       window.showModalDialog('PrintMateOut.aspx?MainID='+ document.getElementById('hid_billid').value+'&SubID='+document.getElementById('hid_sub_id').value,'','dialogHeight:375px;dialogWidth:740px;help:0;');

}

 

</script>

 

2、打印页面,后置代码并没什么东西,前台用JavaScript处理了: <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></meta>

<script language="javascript" type="text/javascript">

 

        function doPage()        {             layLoading.style.display = "none";        }         //设置网页打印的页眉页脚为空         function PageSetup_Null()         {              try              {               var Wsh=new ActiveXObject("WScript.Shell");               HKEY_Key="header";               Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");               HKEY_Key="footer";               Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");                }              catch(e){}         }                //设置网页打印的页眉页脚为默认值         function  PageSetup_Default()         {            try          {           var Wsh=new ActiveXObject("WScript.Shell");           HKEY_Key="header";           Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");           HKEY_Key="footer";           Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d");          }          catch(e){}         }

                 /*打印函数          *doType 页面页脚类型  0 设置为空,1 设置为默认          */         function PrintTable(doType)   //打印函数         {                 if(doType == '0')              {                 PageSetup_Null();              }             else             {                 PageSetup_Default();              }              document.getElementById("btn_Print").style.display = "none";              document.getElementById("btn_NoPrint").style.display = "none";              window.print();              document.getElementById("btn_Print").style.display = "";              document.getElementById("btn_NoPrint").style.display = "";              window.location.reload();         } 

<body>

<!-------------------------要打印部分------------------------

<table>

    要打印的表格

</table>

-------------------------要打印部分------------------------->

 

<table cellpadding="0" cellspacing="0" border="0" style="width: 666px;">                 <tr>                     <td align="right" style="height: 27px;">                         <asp:Button ID="btn_Print" runat="server" Text="确认打印" OnClientClick="PrintTable('0')"                             Height="25px" Width="80px" />&nbsp;&nbsp;&nbsp;                         <asp:Button ID="btn_NoPrint" runat="server" Text="取消打印" OnClientClick="JavasCript:window.close();"                             Height="25px" Width="80px" />                     </td>                 </tr>             </table>

 

</body>

 

 

*************OK,打印也就此搞定。

 

如果有疑问或着有改进,可给我留言,呵呵,共同探讨,共同进步。

 

 

分享到:

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET中Request.InputStream使用发布时间:2022-07-10
下一篇:
Asp.net1.0 升级 ASP.NET 2.0 的几个问题总结(转)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap