高分求打印datagridview里显示的数据
老板要我两天做出来打印,可是我没有做过这个,求大家帮帮我!
我有多少分就给多少分!

解决方案 »

  1.   

    用activeReport做啊上网一搜很多代码,拿来用就行,
    从网上下个ActiveReport控件。
    或者你用Excel导出再打印。。
    我做过不少这样的很简单的,两天足够,不过我不打清楚你具体的需求
      

  2.   

    如果只是想找他gridview里的数据,可以再开一个新窗口,将gridview在客户端的id 元素的outerHTML写到新窗口去,然后直接打印即可.如
    functoin GoPrint()
    {
          var newWin = window.open("about:blank","Print");
          newWin.document.write(document.getElementById("GridView1").outerHTML;
         //然后使用ie 打印功能就可
    }
      

  3.   


    http://hi.baidu.com/luhongjing/blog/item/d1413f345286604d251f148a.html
    http://unimapmajj.bokee.com/viewdiary.11395707.html
    http://blog.sina.com.cn/s/blog_4988e1150100b1s9.html
      

  4.   

    http://blog.csdn.net/pfworld/archive/2008/01/22/2058746.aspx
    http://www.cnblogs.com/heekui/archive/2007/05/29/764531.html
      

  5.   

    我来推荐一个java视频课程在线试听:http://www.cdlanhai.com/zxst/
      

  6.   

      private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                Font font = new Font("Tahoma", 12, FontStyle.Underline);//设置画笔 
                Brush bru = Brushes.Blue;
                Pen pen = new Pen(bru);
                pen.Width = 5;
                //设置各边距 
                int nLeft = this.pageSetupDialog1.PageSettings.Margins.Left;
                int nTop = this.pageSetupDialog1.PageSettings.Margins.Top;
                int nRight = this.pageSetupDialog1.PageSettings.Margins.Right;
                int nBottom = this.pageSetupDialog1.PageSettings.Margins.Bottom;
                int nWidth = this.pageSetupDialog1.PageSettings.PaperSize.Width - nRight - nLeft;
                int nHeight = this.pageSetupDialog1.PageSettings.PaperSize.Height - nTop - nBottom;
                //打印各边距 
                e.Graphics.DrawLine(pen, nLeft, nTop, nLeft, nTop + nHeight);
                e.Graphics.DrawLine(pen, nLeft + nWidth, nTop, nLeft + nWidth, nTop + nHeight);
                e.Graphics.DrawLine(pen, nLeft, nTop, nLeft + nWidth, nTop);
                e.Graphics.DrawLine(pen, nLeft, nTop + nHeight, nLeft + nWidth, nTop + nHeight);
                //在离左边距20,右边距20的位置打印haha xixi 
                e.Graphics.DrawString("haha xixi", font, bru, nLeft + 100, nTop + 100);//如果要打印datagridView在这里遍历便可 
                        }
        private void button4_Click(object sender, EventArgs e)
            {
                this.printPreviewDialog1.ShowDialog();
                if (this.printDialog1.ShowDialog() == DialogResult.OK)
                    this.printDocument1.Print();
                
            }这也是我在网上搜到的代码,
      

  7.   

    //将DataGridView控件转换为二位数组。   
              /*         public   static   string[,]   ToStringArrary(DataGridView   dataGridView,   bool   includeColumnText)   
                      {   
                              string[,]   arrReturn   =   null;   
                            int     rowsCount   =   dataGridView.Rows.Count;   
                          int       colsCount   =   dataGridView.Columns.Count   ;   
        
                      //最后一行是供输入的不用读取数据。   
                              if   (rowsCount   >   0)   
                              {   
                                      if   (dataGridView.Rows[rowsCount   -   1].IsNewRow)   
                                              rowsCount--;   
                                
                                
                              }   
                              //包含列的标题   
        
                              int   k   =   0;   
                          if   (includeColumnText)     
                              {   
                                      rowsCount++;   
                                      arrReturn   =   new   string[rowsCount,   colsCount];   
        
                                      for   (k   =   0;   k   <   colsCount;   k++)   
                                      {   
                                              arrReturn[0,   k]   =   dataGridView.Columns[k].HeaderText;   
                                        
                                      }   
                                      k   =   1;   
                              }   
                        else     
                                      
                                      arrReturn   =new   string   [rowsCount   ,colsCount   ];   
                                        
                            //读取单元格数据   
        
                    
                        
                      for   (int   i=1;k<rowsCount   ;i++)   
                      {   
                      for   (int   j=0;j<colsCount   ;j++)   
                      {   
                      arrReturn   [i,j]=dataGridView   .Rows   [i].Cells   [j].Value   .ToString()   ;   
                        
                      }   
                      }   
                      return   arrReturn   ;   
                        
            }
      

  8.   


    打印dataset的數據
    private void two(PrintPageEventArgs e, DataSet aa)
            {
                Font HeadFont = new Font("宋体", 18);
                Font BodyFont = new Font("宋体", 12);
                Graphics g = e.Graphics;
                Pen pen = new Pen(Color.Black, 1);
                Rectangle rect = new Rectangle(40, 30, 740, aa.Tables[0].Rows.Count * 30 + 130);
                g.DrawRectangle(pen, rect);
                g.DrawString(aa.DataSetName, HeadFont, new SolidBrush(Color.Black), 200, 50);
                g.DrawString("发往厂家:" + aa.Tables[0].TableName, BodyFont, new SolidBrush(Color.Black), 70, 90);
                g.DrawString("出厂日期:" + DateTime.Now.ToLongDateString(), BodyFont, new SolidBrush(Color.Black), 500, 90);
                rect = new Rectangle(60, 110, 700, 30);
                g.DrawRectangle(pen, rect);
                g.DrawString(aa.Tables[0].Columns[0].ColumnName, BodyFont, new SolidBrush(Color.Black), 70, 120);
                g.DrawLine(pen, 150, 110, 150, 140);
                g.DrawString(aa.Tables[0].Columns[1].ColumnName, BodyFont, new SolidBrush(Color.Black), 160, 120);
                g.DrawLine(pen, 300, 110, 300, 140);
                g.DrawString(aa.Tables[0].Columns[2].ColumnName, BodyFont, new SolidBrush(Color.Black), 310, 120);
                g.DrawLine(pen, 500, 110, 500, 140);
                g.DrawString(aa.Tables[0].Columns[3].ColumnName, BodyFont, new SolidBrush(Color.Black), 510, 120);
                for (int i = 0; i < aa.Tables[0].Rows.Count; i++)
                {
                    g.DrawLine(pen, 60, 110 + 30 * (i + 1), 60, 140 + 30 * (i + 1));
                    g.DrawString(aa.Tables[0].Rows[i][0].ToString(), BodyFont, new SolidBrush(Color.Black), 70, 120 + 30 * (i + 1));
                    g.DrawLine(pen, 150, 110 + 30 * (i + 1), 150, 140 + 30 * (i + 1));
                    g.DrawString(aa.Tables[0].Rows[i][1].ToString(), BodyFont, new SolidBrush(Color.Black), 160, 120 + 30 * (i + 1));
                    g.DrawLine(pen, 300, 110 + 30 * (i + 1), 300, 140 + 30 * (i + 1));
                    g.DrawString(aa.Tables[0].Rows[i][2].ToString(), BodyFont, new SolidBrush(Color.Black), 310, 120 + 30 * (i + 1));
                    g.DrawLine(pen, 500, 110 + 30 * (i + 1), 500, 140 + 30 * (i + 1));
                    g.DrawString(aa.Tables[0].Rows[i][3].ToString(), BodyFont, new SolidBrush(Color.Black), 510, 120 + 30 * (i + 1));
                    g.DrawLine(pen, 760, 110 + 30 * (i + 1), 760, 140 + 30 * (i + 1));
                    g.DrawLine(pen, 60, 140 + 30 * (i + 1), 760, 140 + 30 * (i + 1));
                }        }
     
    private DataSet CreateDate()
            {
                System.Data.DataTable dt = new System.Data.DataTable();
                dt.TableName = "XXXXXXXXXX有限公司";
                System.Data.DataRow dr;
                dt.Columns.Add(new System.Data.DataColumn("序号", typeof(System.String)));
                dt.Columns.Add(new System.Data.DataColumn("人渣编号", typeof(System.String)));
                dt.Columns.Add(new System.Data.DataColumn("人渣名称", typeof(System.String)));
                dt.Columns.Add(new System.Data.DataColumn("永久性标识", typeof(System.String)));            for (int i = 0; i < 30; i++)
                {
                    System.Random rd = new System.Random(Environment.TickCount * i); ;
                    dr = dt.NewRow();
                    dr[0] = i.ToString().PadLeft(2, '0').ToString(); ;
                    dr[1] = "3401S-010-A-" + i.ToString().PadLeft(2, '0').ToString();
                    dr[2] = "XXXXXXX人渣" + i.ToString().PadLeft(2, '0').ToString();
                    dr[3] = "0704030336022" + i.ToString().PadLeft(2,'0').ToString(); ;
                    dt.Rows.Add(dr);
                }
                DataSet ds = new DataSet();
                ds.DataSetName = "XXXXXXXXXXXXXXXXXXX人渣永久性标识附表";
                ds.Tables.Add(dt);
                return ds;
            }
     
    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
            {
                try
                {
                    two(e, CreateDate());
                }
                catch (Exception Err)
                {
                    MessageBox.Show(Err.Message);
                }
            }
      

  9.   

    http://junying1202.blog.163.com/blog/static/7449438200901911538757/
      

  10.   

    zzxap风语者,上面的代码11楼和10楼的一起用吗?
      

  11.   

    我是想打印datagridview中的内容,11楼打印dataset中的数据是什么意思?我看不懂,不要见笑!解释一下,谢谢!
      

  12.   

    http://www.codeproject.com/KB/printing/datagridviewprinter.aspx
    这个可以,还有demo
      

  13.   

    http://www.cnblogs.com/heekui/archive/2007/05/29/764531.html
      

  14.   

     public void PrintPreview(DataTable table)
            {
                
                try
                {
                    //打印设置
                    PrinterSettings set = new PrinterSettings();
                    set.Collate = true;
                    set.Duplex = Duplex.Simplex;
                    PrintDocument pd = new PrintDocument();
                    pd.PrinterSettings = set;
                    pd.PrintPage += new PrintPageEventHandler(this.pd_printTable);                //打印预览
                    PrintPreviewDialog view = new PrintPreviewDialog();
                    view.Name = "view";
                    view.UseAntiAlias = true;
                    view.Document = pd;
                    view.AutoScaleDimensions = new SizeF(290, 210);
                    view.ShowDialog();
                    _TableIndex = 0;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            private void pd_printTable(object sender, PrintPageEventArgs pea)
            {
                int y = 65;
                int x = 20;
                Font font = new Font("Arial", 9);
                
                          if (_TableIndex <= dt.Rows.Count - 1)
                {
                    pea.Graphics.DrawString("客户编号:", font, Brushes.Black, x, y, new StringFormat());
                    pea.Graphics.DrawString("机种品号:", font, Brushes.Black, x, y + 15, new StringFormat());
                    pea.Graphics.DrawString("机种品番:", font, Brushes.Black, x, y + 30, new StringFormat());
                    pea.Graphics.DrawString("生产数量:", font, Brushes.Black, x + 120, y, new StringFormat());
                    pea.Graphics.DrawString("工序名称:", font, Brushes.Black, x + 180, y + 15, new StringFormat());
                    pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT002"].ToString(), font, Brushes.Black, x + 62, y, new StringFormat());
                    pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT006"].ToString(), font, Brushes.Black, x + 62, y + 15, new StringFormat());
                    pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT008"].ToString(), font, Brushes.Black, x + 62, y + 30, new StringFormat());
                    pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT009"].ToString(), font, Brushes.Black, x + 182, y, new StringFormat());
                    pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT011"].ToString(), font, Brushes.Black, x + 240, y + 15, new StringFormat());
                    pea.Graphics.DrawString(GetConvertString(dt.Rows[_TableIndex]["TAT003"].ToString(), "CODE128"), new Font("Code 128", 26), Brushes.Black, 20, 15, new StringFormat());
                    pea.Graphics.DrawString(dt.Rows[_TableIndex]["TAT003"].ToString(), font, Brushes.Black, 70, 50, new StringFormat());                _TableIndex++;
                    if (_TableIndex == dt.Rows.Count)
                    {
                        _TableIndex = 0;
                        pea.HasMorePages = false;
                    }
                    else
                    {
                        pea.HasMorePages = true;
                    }
                }
            }这是我前段时间写的一个打印条码的代码!
    请参与,相信对你是有用的!
      

  15.   

    有人写了这么一个打印类   DataGridViewPrint.cs 自己到网上找 有这个东东的
      

  16.   

    我们公司做过这个一模一样的功能,要用到一个打印的控件,再上些代码就行了,打印的控件我的资源里面有,你可以去下载。再有就是我把后台代码贴出来 
     <input type="button"  id="cmdPRINT" onclick="printReport()" value="[打印]" /> 
    <script type="text/javascript" language="javascript"> 
    //用于调用设置打印参数的方法和显示预览界面
    function printReport(){
            printBase();
           //printBase("&w&b页码,&p/&P","&u&b&d");//默认
           //window.print();
           factory.printing.Preview(); //预览
           //factory.printing.Print(false);  //false为默认打印机,true为选择打印机

    </script>
      

  17.   

    http://www.codeproject.com/KB/printing/datagridviewprinter.aspx 
    这个的确是不错但是也有个问题....超过打印页面的内容显示不出来的
      

  18.   

    求大家帮帮忙,我用的例子是http://www.cnblogs.com/heekui/archive/2007/05/29/764531.html
    运行出的错误是:错误 1 找不到类型或命名空间名称“PrintOptions”(是否缺少 using 指令或程序集引用?)
    错误 3 当前上下文中不存在名称“CellButton”
    怎么修改啊?
      

  19.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace testPrint
    {
        public partial class PrintOptions : Form
        {
            public PrintOptions()
            {
                InitializeComponent();
            }
            public PrintOptions(List<string> availableFields)
            {
                InitializeComponent();            foreach (string field in availableFields)
                         chklst.Items.Add(field, true);
            }        private void PrintOtions_Load(object sender, EventArgs e)
            {
                rdoAllRows.Checked = true;
                chkFitToPageWidth.Checked = true; 
            }        private void btnOK_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }        private void btnCancel_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }        public List<string> GetSelectedColumns()
            {
                List<string> lst = new List<string>();
                foreach (object item in chklst.CheckedItems)
                        lst.Add(item.ToString());
                return lst;
            }        public string PrintTitle
            {
                get { return txtTitle.Text; }
            }        public bool PrintAllRows
            {
                get { return rdoAllRows.Checked; }
            }        public bool FitToPageWidth
            {
                get { return chkFitToPageWidth.Checked; }
            }    }
    }在那个工程下 是有这个类的
      

  20.   

    错误 5 当前上下文中不存在名称“InitializeComponent”
    错误 6 当前上下文中不存在名称“InitializeComponent”
    错误 7 当前上下文中不存在名称“chklst”
    错误 8 当前上下文中不存在名称“rdoAllRows”
    错误 9 当前上下文中不存在名称“chkFitToPageWidth”
    错误 10 当前上下文中不存在名称“chklst”
    错误 11 当前上下文中不存在名称“txtTitle”
    错误 12 当前上下文中不存在名称“rdoAllRows”
             13 当前上下文中不存在名称“chkFitToPageWidth”
    添加之后出错,这些都是什么意思啊?
      

  21.   

    testPrint
    这个你应该下了吧~  你看看他的项目中的目录结构是什么样,参照写 就可以了
      

  22.   

    访问我的博客 程序员日记 http://www.ideaext.com
    下面是当前项目中用到得,希望能给你带来帮助。好运!太多字了,回复不了,看下面的连接吧。http://www.ideaext.com/read.php/195.htm
      

  23.   

    给你一个方便的打印DataGridView的程序
    超方便http://download.csdn.net/source/1021760
      

  24.   

    那篇BLOG 里的项目,默认就是右上角 显示打印日期的
      

  25.   

    那篇BLOG 里的项目,默认就是右上角 显示打印日期的
      

  26.   

    “DataGridView打印精灵”,提供您简捷丰富的DataGridView报表打印功能! 2009-08-01 21:00“DataGridView打印精灵”,提供您简捷丰富的DataGridView报表打印功能!  
      集英软件工作室是一家主攻.NET开发的软件工作室,提供各种组件与控件开发。  这个打印组件的高级版只需要70块,您就可以享受到便利的DataGridView打印服务。  “DataGridView打印精灵”可根据各种不同设置方案,进行DataGridView的快速打印。
      使用这个DLL方法很简单,先需要添加对DLL的引用。再进行以下代码之添加:VB代码:
      dim p as new JYWorks.打印精灵(DGV) 'DGV是一个要传入的Datagridview对象.
      p.showdialog()   '''或 p.show()C#代码:
        
        JYWorks.打印精灵 printer=new JYWorks.打印精灵(DGV) 'DGV是一个要传入的Datagridview对象.
        printer.showdialog()    //或printer.show()您可以在Show出打印精灵窗体前设置以下属性:
        Title属性:设置标题文本
      SubTitle属性:设置子标题文本
        FooterText属性:设置页脚文本。其他打印的设置可以在窗体中自由修改。
    图片展示:
    最近提供的组件:1、DataGridView加强版(可提供把数据导出到ACCESS、XLS、DBF、XML以及过滤与数据控件功能)2、DataGridView打印精灵高级版。3、.NET 3D-XCHART报表4、SQLSERVER-ACCESS数据互操作组件。工作室服务QQ 157864607手机 13633001878天翼手机:18978216557.net QQ讨论群: 12555220
    DataGridview打印精灵高级测试版下载地址:http://sonoffreedom.googlepages.com/DGVP1.rar (使用次数有所限制。)
     
      

  27.   

    步骤1:新建一个报表窗体,托一个控件:报表》》CrystalReportViewer 
    步骤2:添加新建项---数据集,添加的字段是DataGridView的字段
    步骤3:添加一个水晶报表:Crystal报表(放在bin-->debug下)
    步骤4:在报表窗体的load事件中写代码
     代码如下:
     Using CrystalDecisions.CrystalReports.Engine;//引用命名空间
     ReportDocument myCrp;//定义一个报表
     Public DataTable myDataTable;
     //在该窗体的构造函数下实例化一个报表
    myCrp=new ReportDocument();
    双击crystalReportViewer然后在 Load事件写:
     myCrp.load(Application.StartupPath+”./Reports/ CrystalName”);//指明实例化的报表文件的路径
    myCrp.SetDataTable(myDataTable);//将myDataTable传递给实例化的报表
    myCrp.Refresh();//刷新报表
    this.crytalName.ReportSource=myCrp;//将实例化的报表设置为绑定到CrystalReportViewerh控件.在[导出到报表按钮里写]打印按钮:
     private void button1_Click(object sender, EventArgs e)
            {
                Form1 myForm1 = new Form1();//实例化对象
                myForm1.myDataTable = (DataTable)this.dgv_Read.DataSource ;//把dgvshow的数据源赋给实例化的那个窗体的数据表;
                myForm1.Show();
                
                //crystalReportViewer1 myCrystalReportView_PP = new crystalReportViewer1();//实例化对象
                //myCrystalReportView_PP.myDataTable = (DataTable)this.dgv_Show.DataSource;//把dgvshow的数据源赋给实例化的那个窗体的数据表;
                //myCrystalReportView_PP.Show();//显示
            }