加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 打印报表实例

(2009-09-02 10:30:00)
标签:

c

打印

报表

实例

it

分类: 计算机知识

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace WindowsFormsApplication17
{
    public partial class Form1 : Form
    {
        String drawString = "";
        Font drawFont = null;
        SolidBrush drawBrush = null;
        float x = 0F;
        float y = 0F;
        StringFormat drawFormat = new StringFormat();

        string test = "";

        public string Test
        {
            get { return test; }
            set { test = value; }
        }
        public Form1()
        {
            InitializeComponent();
            //设置纸张大小
            PaperSize paperSize = new PaperSize("DataOrder", 1023, 614);
            printDocument1.DefaultPageSettings.PaperSize = paperSize;

        }

        //打印
        private void button1_Click(object sender, EventArgs e)
        {
            printDocument1.PrintPage += new PrintPageEventHandler(MyPrintDoc_PrintPage);
            try
            {
                printPreviewDialog1.Document = printDocument1;
                printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D;
                printPreviewDialog1.ShowDialog();
                printDocument1.Print();

            }
            catch
            {

                MessageBox.Show("请安装打印机", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
       

        }


        protected void MyPrintDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            //字体 颜色 格式 坐标
            drawFont = new Font("Arial", 8);
            drawBrush = new SolidBrush(Color.Black);
            x = 0F;
            y = 0F;
            drawFormat.FormatFlags = StringFormatFlags.NoWrap;

            //块数
            int num = 6;
            float weightAll = 12.600F;
            //标题
            //标题第一行
            string title = "钢板入库计量单";
            string BillCode = "吊号:" + "20080505170";
            string ClassType = "班别:" + "乙";
            string type1 = "类型:" + "定轧";
            string OrderNum = "记录单号:" + "QW-Y14-02-06";
            //标题第二行
            string ArriveStation = "到站:";
            string SpLine = "专用线:";
            string SaleNo = "销售订单号:";
            //标题第三行
            string AcceptName = "收货单位:" + "XXXX/12*2438*9144收二支";
            string time = DateTime.Now.Year.ToString() + "年" + DateTime.Now.Month.ToString().PadLeft(2,'0')+"月"+DateTime.Now.Day.ToString()+"日";
            //表格下数据
            string BoardNum = "合计:" + num.ToString() + "    块      " + weightAll.ToString()+"   吨   ";
            string CheckMan1 = "检查员:" + "";
            string MeName = "计量员:"+"XX";
            string CheckMan2 = "核对员:" + "";
            //线条长度
            Pen line = new Pen(drawBrush, 1);
            //绘图--字的位置
            //绘图--总标题
            e.Graphics.DrawString(title, drawFont, drawBrush, 400, 45, drawFormat);
            //绘图--标题--第一行
            //吊号
            e.Graphics.DrawString(BillCode, drawFont, drawBrush, 125,83, drawFormat);
            //班别
            e.Graphics.DrawString(ClassType, drawFont, drawBrush, 354, 83, drawFormat);
            //类型
            e.Graphics.DrawString(type1, drawFont, drawBrush, 500, 83, drawFormat);
            //记录单号
            e.Graphics.DrawString(OrderNum, drawFont, drawBrush, 685, 83, drawFormat);

            //绘图--标题--第二行
            //到站
            e.Graphics.DrawString(ArriveStation, drawFont, drawBrush, 125, 106, drawFormat);
            //专用线
            e.Graphics.DrawString(SpLine, drawFont, drawBrush, 354, 106, drawFormat);
            //销售订单号
            e.Graphics.DrawString(SaleNo, drawFont, drawBrush, 500, 106, drawFormat);

            //绘图--标题--第三行
            //收货单位
            e.Graphics.DrawString(AcceptName, drawFont, drawBrush, 125, 129, drawFormat);
            //时间
            e.Graphics.DrawString(time, drawFont, drawBrush, 685, 129, drawFormat);


            //绘图--表格下数据
            //合计
            e.Graphics.DrawString(BoardNum, drawFont, drawBrush, 125, 568, drawFormat);
            //检查员
            e.Graphics.DrawString(CheckMan1, drawFont, drawBrush, 400, 568, drawFormat);
            //计量员
            e.Graphics.DrawString(MeName, drawFont, drawBrush, 550, 568, drawFormat);
            //核对员
            e.Graphics.DrawString(CheckMan2, drawFont, drawBrush, 700, 568, drawFormat);

            //绘图 表格
            float leftbianJu = 120;
            float topbianJu = 152;
            float tableWidth = 770;
            float tableHeight = 393;

            float cellwidth = 55;
            float cellwidth1 = 110;
            float cellheigh = 0F;

            //绘图--线的位置 外边矩形
            //横
            e.Graphics.DrawLine(line, leftbianJu, topbianJu,leftbianJu+tableWidth,topbianJu);
            e.Graphics.DrawLine(line, leftbianJu, topbianJu + tableHeight, leftbianJu + tableWidth, topbianJu + tableHeight);
            //竖
            e.Graphics.DrawLine(line, leftbianJu, topbianJu, leftbianJu, topbianJu+tableHeight);
            e.Graphics.DrawLine(line, leftbianJu + tableWidth, topbianJu, leftbianJu + tableWidth, topbianJu + tableHeight);
            //e.Graphics.DrawLine(line, 15, 0, 15, 614);

            //绘图--内部竖线的位置
            y = topbianJu+tableHeight;
            x = leftbianJu + cellwidth;
            e.Graphics.DrawLine(line, x, topbianJu, x,y );
            x= leftbianJu + cellwidth + cellwidth1;
            e.Graphics.DrawLine(line,x , topbianJu, x, y);
            x = leftbianJu + cellwidth + cellwidth1 * 2;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);
            x = leftbianJu + cellwidth + cellwidth1 * 3;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);
            x = leftbianJu + cellwidth * 2 + cellwidth1 * 3;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);
            x = leftbianJu + cellwidth * 3 + cellwidth1 * 3;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);
            x = leftbianJu + cellwidth * 4 + cellwidth1 * 3;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);
            x = leftbianJu + cellwidth * 5 + cellwidth1 * 3;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);
            x = leftbianJu + cellwidth * 6 + cellwidth1 * 3;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);
            x = leftbianJu + cellwidth * 7 + cellwidth1 * 3;
            e.Graphics.DrawLine(line, x, topbianJu, x, y);

            //绘图--内部横线的位置
            //根据块数计算表格高度
            if (num != 0)
                cellheigh = tableHeight / (float)num;
            else
                cellheigh = 0;
            //绘图--内部横线的位置
            for (int i = 1; i < num; i++)
            {
                if (i == 1)
                {
                    //数据
                    string str = "";
                    str = "序号";
                    x = leftbianJu + cellwidth / 5;
                    y = topbianJu + cellheigh / 3;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);
                    str = "卡片编号";
                    x = leftbianJu + cellwidth + cellwidth1 / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "炉号";
                    x = leftbianJu + cellwidth + cellwidth1 + cellwidth1 / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "物料编码";
                    x = leftbianJu + cellwidth + cellwidth1*2 + cellwidth1 / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "牌号";
                    x = leftbianJu + cellwidth + cellwidth1*3 + cellwidth / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "厚度";
                    x = leftbianJu + cellwidth * 2 + cellwidth1 * 3 + cellwidth / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "宽度";
                    x = leftbianJu + cellwidth * 3 + cellwidth1 * 3 + cellwidth / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "长度";
                    x = leftbianJu + cellwidth * 4 + cellwidth1 * 3 + cellwidth / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "重量";
                    x = leftbianJu + cellwidth * 5 + cellwidth1 * 3 + cellwidth / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "级别";
                    x = leftbianJu + cellwidth * 6 + cellwidth1 * 3 + cellwidth / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);

                    str = "偏差";
                    x = leftbianJu + cellwidth * 7 + cellwidth1 * 3 + cellwidth / 5;
                    e.Graphics.DrawString(str, drawFont, drawBrush, x, y, drawFormat);
                }
                //横线
                y = topbianJu + cellheigh * i;
                e.Graphics.DrawLine(line, leftbianJu, y, leftbianJu + tableWidth, y);
            }
            e.HasMorePages = false;
        }


    }
}

效果如下:

C# <wbr>打印报表实例

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有