• 【转】Winfrom datagridview 打印


    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Data;
    using System.Windows.Forms;

    namespace caiwu
    {
        
    public class cutePrinter2
        
    {
            
    private DataGridView dataGridView1;
            
    private PrintDocument printDocument;
            
    private PageSetupDialog pageSetupDialog;
            
    private PrintPreviewDialog printPreviewDialog;

            
    private string title = "";

            
    int currentPageIndex = 0;
            
    int rowCount = 0;
            
    int pageCount = 0;

            
    int titleSize = 20;
            
    bool isCustomHeader = false;

            Brush alertBrush 
    = new SolidBrush(Color.Red);

            
    string[] header = null;//如果自定义就填入字符串,如果需要斜线分隔,就用\表示,例如:个数#名字 其中#为splitChar 
            string[] uplineHeader = null;//上行文字数组 
            int[] upLineHeaderIndex = null;//上行的文字index,如果没有上行就设为-1; 

            
    public bool isEveryPagePrintTitle = true;//是否每一页都要打印标题。 
            public int headerHeight = 30;//标题高度。 
            public int topMargin = 30//顶边距 
            public int cellTopMargin = 6;//单元格顶边距 
            public int cellLeftMargin = 4;//单元格左边距 
            public char splitChar = '#';//当header要用斜线表示的时候 
            public string falseStr = "×";//如果传进来的DataGridView中有 false,把其转换得字符。 
            public string trueStr = "";//如果传进来的DataGridView中有 true,把其转换得字符。 
            public int pageRowCount = 30;//每页行数 
            public int rowGap = 28;//行高 
            public int colGap = 5;//每列间隔 
            public int leftMargin = 45;//左边距 
            public Font titleFont = new Font("黑体"24, FontStyle.Bold);//标题字体 
            public Font font = new Font("宋体"10);//正文字体 
            public Font headerFont = new Font("黑体"11, FontStyle.Bold);//列名标题 
            public Font footerFont = new Font("Arial"8);//页脚显示页数的字体 
            public Font upLineFont = new Font("Arial"9, FontStyle.Bold);//当header分两行显示的时候,上行显示的字体。 
            public Font underLineFont = new Font("Arial"8);//当header分两行显示的时候,下行显示的字体。 
            public Brush brush = new SolidBrush(Color.Black);//画刷 
            public bool isAutoPageRowCount = true;//是否自动计算行数。 
            public int buttomMargin = 80;//底边距 
            public bool needPrintPageIndex = true;//是否打印页脚页数 
            public bool setTongji = false;       //设置是否显示统计

            
    string sTitle = "";          //显示标题
            string sTongJi01 = "";           //统计01
            string sTongJi02 = "";          //统计02
            string sTongJi03 = "";          //统计03
            bool isTongji = false;     //是否显示统计   

            
    string time01;         //具体时间标题
            string time02;

            Font tongJiFont 
    = new Font("宋体"14);     //统计
            Font dateFont = new Font("宋体"12, FontStyle.Bold);     //日期标题


            
    /// <summary>
            
    /// 日统计报表打印
            
    /// </summary>
            
    /// <param name="dGView">DataGridView</param>
            
    /// <param name="title">标题</param>
            
    /// <param name="times01">起始时间</param>
            
    /// <param name="times02">中止时间</param>
            
    /// <param name="tj01">统计01</param>
            
    /// <param name="tj02">统计02</param>
            
    /// <param name="tj03">统计03</param>
            
    /// <param name="tj">确认是否打印统计</param>
            
    /// <param name="iPrintType">打印样式选择,默认2</param>

            public cutePrinter2(DataGridView dGView, string title, string times01, string times02, string tj01, string tj02, string tj03, bool tj)
            
    {
                
    this.title = title;
                
    this.sTongJi01 = tj01;
                
    this.sTongJi02 = tj02;
                
    this.sTongJi03 = tj03;

                
    this.time01 = times01;
                
    this.time02 = times02;

                
    this.setTongji = tj;

                
    this.dataGridView1 = dGView;
                MessageBox.Show(dGView.Rows.Count.ToString());
                printDocument 
    = new PrintDocument();
                printDocument.PrintPage 
    += new PrintPageEventHandler(this.printDocument_PrintPage);

            }



            
    public bool setTowLineHeader(string[] upLineHeader, int[] upLineHeaderIndex)
            
    {
                
    this.uplineHeader = upLineHeader;
                
    this.upLineHeaderIndex = upLineHeaderIndex;
                
    this.isCustomHeader = true;
                
    return true;
            }

            
    public bool setHeader(string[] header)
            
    {
                
    this.header = header;
                
    return true;

            }


            
    private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            
    {

                
    打印 --- 统计报表(年报表)

            }

            
    private void DrawLine(Point sp, Point ep, Graphics gp)
            
    {
                Pen pen 
    = new Pen(Color.Black);
                gp.DrawLine(pen, sp, ep);
            }


            
    public PrintDocument GetPrintDocument()
            
    {
                
    return printDocument;
            }




            
    public void Print()
            
    {
                rowCount 
    = 0;
                
    try
                
    {
                    
    if (dataGridView1.DataSource.GetType().ToString() == "System.Data.DataSet")
                    
    {
                        rowCount 
    = ((DataSet)dataGridView1.DataSource).Tables[0].Rows.Count;
                    }

                    
    else if (dataGridView1.DataSource.GetType().ToString() == "System.Data.DataView")
                    
    {
                        rowCount 
    = ((DataView)dataGridView1.DataSource).Count;
                    }


                    pageSetupDialog 
    = new PageSetupDialog();
                    pageSetupDialog.AllowOrientation 
    = true;
                    pageSetupDialog.Document 
    = printDocument;
                    pageSetupDialog.Document.DefaultPageSettings.Landscape 
    = true;        //    设置打印为横向
                    pageSetupDialog.ShowDialog();
                    printPreviewDialog 
    = new PrintPreviewDialog();
                    printPreviewDialog.Document 
    = printDocument;
                    printPreviewDialog.Height 
    = 600;
                    printPreviewDialog.Width 
    = 600;
                    printPreviewDialog.ClientSize 
    = new System.Drawing.Size(1024768);
                    printPreviewDialog.PrintPreviewControl.Zoom 
    = 1;
                    printPreviewDialog.ShowDialog();
                }

                
    catch
                
    {
                    
    //throw new Exception("Printer error." + e.Message); 
                }


            }

        }

    }

  • 相关阅读:
    python常用代码: logging 和 无视locale强制东8区
    近期文摘2
    偶尔用一次windows开发,有点明白为何人觉得macos对开发友好
    zz golang str json map互转
    golang一些有价值文章摘录
    从 'golang新手容易犯的三个错误' 中学到的知识点
    macos下使用postgresql
    python netsnmp与pysnmp
    快速实现python抓包嗅探
    macos下npm install 报错: fsevents .... permission denined
  • 原文地址:https://www.cnblogs.com/bobofsj11/p/1125647.html
Copyright © 2020-2023  润新知