WEB页面同时实现两种打印(下载Excel,页面直接打印)

1,下载Excel(参考昊子收藏夹)

 1          public   void  PrintTable(System.Web.UI.WebControls.Table table)
 2          {
 3            System.IO.StringWriter SW=new System.IO.StringWriter();
 4            foreach(TableRow r in table.Rows)
 5            {
 6                foreach(TableCell c in r.Cells)
 7                {
 8                    SW.Write(c.Text+"\t");
 9                }

10                SW.Write("\n");
11            }

12            SW.Close();
13            Response.AddHeader("Content-Disposition""attachment; filename=Table.xls"); 
14            Response.ContentType = "application/ms-excel"
15            Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 
16            Response.Write(SW); 
17            Response.End();
18        }
         private   void  BtnPrint_Click( object  sender, System.EventArgs e)
        
{
            BtnSubmit_Click(sender,e);
            PrintTable(Table1);
        }

因为最开始用的是Table输出,无法返回StateView,所以提交打印的时候需要重新输出一遍Table的内容(效率很低)然后从Table中把内容导出并输出到客户端

2,页面直接打印

在打印页面添加html代码

< STYLE  media =print >  
.Noprint
{display:none;} 
.PageNext
{page-break-after: always;} 
</ STYLE >  
然后在导航内容加上Class属性

< table  cellSpacing ="0"  cellPadding ="0"  width ="100%"  border ="0"  class =noprint >
这样可以只输出报表,而不打印导航栏内容

在页面添加WebBrowser对象

     < OBJECT  id =WebBrowser  height =0  width =0  classid =CLSID:8856F961-340A-11D0-A96B-00C04FD705A2  VIEWASTEXT >   </ OBJECT >

注意有时VS会自动添加对象的参数,如果使用对象的页出错,请删除自动添加的参数值
添加按钮

< INPUT  TYPE =button  VALUE =打印页面  onclick =document.all.WebBrowser.ExecWB(7,1) >

其实是打印预览按钮

注意事项
1,点击过下载Excel按钮之后再点打印页面会出错,客户端会提示"错误: 没有权限",不知道为什么

2,使用WebBrowser对象时要求客户端设置“对没有标记为安全的ActiveX控件进行初始化”

你可能感兴趣的:(Excel)