private void button1_Click(object sender, EventArgs e)
        {
            
            printDialog1.ShowDialog(); //设置打印文档
            printPreviewDialog1.Document = this.printDocument1;
            printPreviewDialog1.ShowDialog();
                    }        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {            //e.Graphics.DrawString(dataGridView1.Columns.ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, 260, 400);
            try
            {
                DataTable dt = (DataTable)dataGridView1.DataSource;                int r = 0;
                int c = 20;
                for (int i = 0; i < dt.Rows.Count; i++)
                {                    for (int j = 0; j < dt.Columns.Count; j++)
                    {                        e.Graphics.DrawString(dt.Rows[i][j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
                        r = r + 60;                    }
                    r = 0;
                    c += 20;                }
            }
            catch (Exception ex)
            {
            }
                    }打印没有数据 是空的  程序怎么修改下  高手指点下

解决方案 »

  1.   

    DataTable dt = (DataTable)dataGridView1.DataSource;提示有问题  该怎么写代码  好像有类型转化异常
      

  2.   

    DataTable dt = dataGridView1.DataSource as DataTable;
      

  3.   

    不行     dataGridView 上的数据不能打印  
    谁有好的程序源码   将dataGridView 上的数据浏览打印
      

  4.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Windows.Forms;namespace Attendance
    {    /// <summary>
        /// <para>打印DataGridView</para>
        /// <para>用法:</para>
        /// <para> DataGridViewPrint dgvPrint = new DataGridViewPrint(DataGridView dataGridView1);</para>
        /// <para> dgvPrint.Print();</para>
        /// </summary>    public class DataGridViewPrint
        {
            private DataGridView dataGridView;
            private PrintDocument printDocument;
            private PageSetupDialog pageSetupDialog;
            private PrintPreviewDialog printPreviewDialog;
            private int dgvIndex = 0;
            private int rowCount = 0;
            private int colCount = 0;
            private int x = 0;
            private int y = 0;
            int i = 0;
            private int rowGap = 60;
            private int leftMargin = 50;
            private Font font = new Font("Arial", 10);
            private Font headingFont = new Font("Arial", 11, FontStyle.Underline);
            private Font captionFont = new Font("Arial", 10, FontStyle.Bold);
            private Brush brush = new SolidBrush(Color.Black);
            private string cellValue = string.Empty;        public DataGridViewPrint(DataGridView dataGridView)
            {
                this.dataGridView = dataGridView;
                printDocument = new PrintDocument();
                printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
            }        private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                //for (; dgvIndex < dataGridView.Length; dgvIndex++)
                
                    rowCount = dataGridView.Rows.Count-1;
                    colCount = dataGridView.ColumnCount;
                    //print headings
                    y += rowGap;
                    x = leftMargin;
                    for (int j = 0; j < colCount; j++)
                    {
                        if (dataGridView.Columns[j].Width > 0)
                        {
                            cellValue = dataGridView.Columns[j].HeaderText;
                            e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), x, y, dataGridView.Columns[j].Width, rowGap);
                            e.Graphics.DrawRectangle(Pens.Black, x, y, dataGridView.Columns[j].Width, rowGap);
                            e.Graphics.DrawString(cellValue, headingFont, brush, x, y);
                            x += dataGridView.Columns[j].Width;
                        }
                    }                //print all rows
                    for (; i < rowCount; i++)
                    {
                        y += rowGap;
                        x = leftMargin;
                        for (int j = 0; j < colCount; j++)
                        {
                            if (dataGridView.Columns[j].Width > 0)
                            {
                                cellValue = dataGridView.Rows[i].Cells[j].Value.ToString();
                                e.Graphics.DrawRectangle(Pens.Black, x, y, dataGridView.Columns[j].Width, rowGap);
                                e.Graphics.DrawString(cellValue, font, brush, x, y);
                                x += dataGridView.Columns[j].Width;
                            }
                        }
                        if (y >= e.PageBounds.Height - 80)
                        {
                            // 允許多頁打印
                            y = 0;
                            e.HasMorePages = true;
                            i++;
                            return;
                        }
                    }
                    y += rowGap;
                    for (int j = 0; j < colCount; j++)
                    {
                        e.Graphics.DrawString(" ", font, brush, x, y);
                    }
                    i = 0;
                
                e.HasMorePages = false;
            }        public PrintDocument GetPrintDocument()
            {
                return printDocument;
            }        public void Print()
            {
                try
                {
                    pageSetupDialog = new PageSetupDialog();
                    pageSetupDialog.Document = printDocument;
                    pageSetupDialog.ShowDialog();
                    printPreviewDialog = new PrintPreviewDialog();
                    printPreviewDialog.Document = printDocument;
                    printPreviewDialog.Height = 600;
                    printPreviewDialog.Width = 800;
                    printPreviewDialog.ShowDialog();
                }
                catch (Exception e)
                {
                    throw new Exception("Printer error." + e.Message);
                }
            }
        }
    }本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/resigner/archive/2010/05/20/5609745.aspx