批量动态打印利用IE自带的webbrowser

最近完成一个批量打印,只为以后做参考。如有更好的希望大家告知,谢谢!!

前台代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="frmPm_PayInfoPrint.aspx.cs"
    Inherits="PM.frmPm_PayInfoPrint" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
      <style type="text/css" media="print">
        .noprint
        {
            display: none;
            background: #000000;
        }
    </style>
    <script language="javascript" type="text/javascript"></script>

</head>
<body>
    <object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"
        width="0">
    </object>
    <div class="noprint">
     <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="打印预览">
       <input type="button" name="Button" value="关闭窗口" οnclick="document.all.WebBrowser.ExecWB(45,1)">  
       </div>
    <form id="form1" runat="server">   
    
    </form>
</body>
</html>


后台动态生成......

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Data;
using System.Web.UI.HtmlControls;
using System.Drawing;

    public partial class frmPm_PayInfoPrint : PMBasePage
    {
        private string a= "";
        private string b= "";
        private string c= "";
        private string d= "";
        private string e= "";
        private decimal sum = 0;
        private string keyID = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            //一个参数
            if (Request["keyID"].ToString() != string.Empty)
            {
                keyID = Request["keyID"].ToString();
                Bind(keyID);
            }
            else
            {
                if (Request["a"].ToString() != string.Empty)
                    a= Request["a"].ToString();
                if (Request["b"].ToString() != string.Empty )
                    b= Request["b"].ToString();
                if (Request["c"].ToString() != string.Empty)
                    c= Request["c"].ToString();
                if (Request["d"].ToString() != string.Empty )
                    d= Request["d"].ToString();
                if (Request["e"].ToString() != string.Empty )
                    e= Request["e"].ToString();
                Bind(a, b, c, d, e);
            }


        }
       绑定单条记录
        protected void Bind(string keyID)
        {

            DataTable dt = new DataTable();
            Panel div = new Panel();
            div.Style.Add("width", "650px");
            div.Style.Add("page-break-after", "always");

            #region  头部分
            HtmlTable dthead = new HtmlTable();
            dthead.Width = "650px";
            dthead.Height = "100px";
            for (int j = 1; j < 4; j++)
            {
                HtmlTableRow tr = new HtmlTableRow();
                HtmlTableCell td = new HtmlTableCell();
                HtmlImage img = new HtmlImage();
                switch (j)
                {
                    case 1:
                        img.Src = "../Image/logo.gif";
                        td.Align = "left";
                        td.Controls.Add(img);
                        break;
                    case 2:
                        td.InnerHtml = "<b>主标题</b>";
                        td.Style.Add("font-size", "20px");
                        td.Align = "center";
                        break;
                    case 3:
                        td.InnerHtml = "<b>副标题</b>";
                        td.Style.Add("font-size", "20px");
                        td.Align = "center";
                        break;
                }
                td.Style.Add("width", "100%");
                tr.Controls.Add(td);
                dthead.Controls.Add(tr);
            }

            HtmlTable dthead1 = new HtmlTable();
            dthead1.Width = "650px";
            dthead1.Height = "150px";
            string strSql = sql语句   
	   //这里就是绑定dt  sqlconnection ,sqlcommand......       
           dt = GetDataTable(strSql);
            if (dt == null)
                return;
            if (dt.Rows.Count > 0)
            {
                for (int k = 1; k < 6; k++)
                {
                    HtmlTableRow tr = new HtmlTableRow();
                    HtmlTableCell td = new HtmlTableCell();
                    Label lab = new Label();
                    lab.Text = "";
                    decimal totalarea = 0;
                    switch (k)
                    {
                        case 1:
                            td.InnerText = "日期:";
                            lab.Text = DateTime.Now.ToString("yyyy-MM-dd");

                            break;
                        case 2:
                            td.InnerText = "客户:";
                            lab.Text += dt.Rows[0][0].ToString() + "  ";

                            break;
                        case 3:
                            td.InnerText = "单元:";
                            for (int p = 0; p < dt.Rows.Count; p++)
                            {
                                lab.Text += dt.Rows[p][2].ToString() + " " + dt.Rows[p][4].ToString();
                                //lab.Text += dt.Rows[p][2].ToString() + " " + dt.Rows[p][3].ToString() + " " + dt.Rows[p][4].ToString() + " " + dt.Rows[p][5].ToString() + " " + dt.Rows[p][6].ToString() + " ";
                            }
                            break;
                        case 4:
                            td.InnerHtml = "建筑:";
                            for (int p = 0; p < dt.Rows.Count; p++)
                            {
                                if (dt.Rows[p][1].ToString() != string.Empty)
                                    totalarea += decimal.Parse(dt.Rows[p][1].ToString());
                            }
                            lab.Text += totalarea.ToString() + " M2";
                            break;
                        case 5:
                            td.InnerText = "下述款项:";
                            lab.Text = "";
                            break;
                    }
                    lab.ForeColor = Color.Blue;
                    td.Controls.Add(lab);
                    tr.Controls.Add(td);
                    dthead1.Controls.Add(tr);
                }
            }
            #endregion

            #region 中间
            HtmlTable dtcenter = new HtmlTable();
            HtmlTableRow trenter = new HtmlTableRow();
            HtmlTableCell tdenter = new HtmlTableCell();
            dtcenter.Width = "650px";
            dtcenter.Height = "200px";
           string strSql = sql语句   
	   //这里就是绑定dt  sqlconnection ,sqlcommand......       
           dt = GetDataTable(strSql);
            if (dt == null)
                return;
            if (dt.Rows.Count > 0)
            {
                GridView gv = new GridView();
                gv.Style.Add("width", "650px");
                gv.Style.Add("height", "250px");
                gv.HeaderStyle.ForeColor = Color.Black;
                gv.ForeColor = Color.Blue;
                gv.ShowFooter = true;
                gv.DataSource = dt;
                gv.RowDataBound += new GridViewRowEventHandler(gv_RowDataBound);
                gv.DataBind();
                tdenter.Align = "center";
                tdenter.Controls.Add(gv);
                trenter.Controls.Add(tdenter);
                dtcenter.Controls.Add(trenter);
            }

            HtmlTable dtcenterend = new HtmlTable();
            dtcenterend.Width = "650px";
            dtcenterend.Height = "280px";
           string strSql = sql语句   
	   //这里就是绑定dt  sqlconnection ,sqlcommand......       
           dt = GetDataTable(strSql);
            dt = this.Sqlca.GetDataTable(strSql);
            if (dt == null)
                return;
            if (dt.Rows.Count <= 0)
            {
                this.MsgBox("没有数据!");
                return;
            }
            for (int m = 1; m < 11; m++)
            {
                HtmlTableRow trcenterend = new HtmlTableRow();
                HtmlTableCell tdcenterend = new HtmlTableCell();
                switch (m)
                {
                    case 1:
                        tdcenterend.InnerText = "款项";
                        break;
                    case 2:
                        tdcenterend.InnerText = "转账";
                        break;
                    case 3:
                        tdcenterend.InnerText = "";
                        break;
                    case 4:
                        tdcenterend.InnerText = "付款:";
                        break;
                    case 5:
                        tdcenterend.InnerText = "";
                        break;
                    case 6:
                        tdcenterend.InnerText = "1.支票";
                        break;
                    case 7:
                        tdcenterend.InnerText = "2.转账";
                        break;
                    case 8:
                        tdcenterend.InnerHtml = "  收款人--" + dt.Rows[0][0].ToString();
                        tdcenterend.Style.Add("color", "blue");
                        break;
                    case 9:
                        tdcenterend.InnerHtml = "  账  号--" + dt.Rows[0][1].ToString();
                        tdcenterend.Style.Add("color", "blue");
                        break;
                    case 10:
                        tdcenterend.InnerHtml = "  开户行--" + dt.Rows[0][2].ToString();
                        tdcenterend.Style.Add("color", "blue");
                        break;
                }
                tdcenterend.Align = "left";
                tdcenterend.Style.Add("width", "100%");
                trcenterend.Controls.Add(tdcenterend);
                dtcenterend.Controls.Add(trcenterend);
            }
            #endregion

            #region 底部
            HtmlTable dtend = new HtmlTable();
            dtend.Width = "650px";
            dtend.Height = "200px";
            for (int n = 1; n < 5; n++)
            {
                HtmlTableRow trend = new HtmlTableRow();
                HtmlTableCell tdend = new HtmlTableCell();
                switch (n)
                {
                    case 1:
                        tdend.InnerHtml = "备注";
                        break;
                    case 2:
                        tdend.InnerText = "";
                        break;
                    case 3:
                        tdend.InnerHtml = "签收";
                        tdend.Align = "left";
                        break;
                    case 4:
                        tdend.InnerText = "公司";
                        tdend.Style.Add("color", "blue");
                        tdend.Align = "right";
                        break;
                }
                trend.Controls.Add(tdend);
                dtend.Controls.Add(trend);
            }
            #endregion
            div.Controls.Add(dthead);
            div.Controls.Add(dthead1);
            div.Controls.Add(dtcenter);
            div.Controls.Add(dtcenterend);
            div.Controls.Add(dtend);
            form1.Controls.Add(div);
        }


        //多条根据参数  
        protected void Bind(string a, string b, string c, string d, string e)
        {
            string strSql = sql语句
              //拼接sql            
            if (a!= string.Empty)
                strSql += " and >='" + a+ "'";
           //这里就是绑定dt  sqlconnection ,sqlcommand......       
          DataTable dtAll  = GetDataTable(strSql);
DataTable dt = new DataTable(); if (dtAll == null) return; for (int i = 0; i < dtAll.Rows.Count; i++) { 一个是类似的 } } protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex == -1 && e.Row.RowType != DataControlRowType.Footer) sum = 0; if (e.Row.RowIndex >= 0) { sum += decimal.Parse(e.Row.Cells[3].Text); } else if (e.Row.RowIndex == -1 && e.Row.RowType == DataControlRowType.Footer) { e.Row.Cells[0].Text = "合计:"; e.Row.Cells[3].Text = sum.ToString("N2"); } } }

大致实现情况......

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值