C#打印导出功能实现

来源:互联网 发布:手机淘宝客服在哪里找 编辑:程序博客网 时间:2024/05/16 03:18

由于做的项目用到打印和导出功能,我根据在图书馆里看到的,结合实践,自己编写代码实现了这方面的功能,其中有不足之处,不吝赐教.

class PrintEx
    {

        //打印DataGridView中数据
        public void PrintDataGridView(DataTable dt,object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            int r = 0;
            int c = 20;
            if (dt.Rows.Count > 0)
            {
                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 + 65;

                    }
                    r = 0;
                    c += 20;

                  }
              }
          }

        //自定义方法ExportDataGridView()实现导出到Excel
        public bool ExportDataGridView(DataGridView dgv, bool isShowExcle)
        {
            if (dgv.Rows.Count == 0)
           
                return false;
           
          
                //建立Excel对象
                Excel.Application excel = new Excel.Application();
                excel.Application.Workbooks.Add(true);
                excel.Visible = isShowExcle;
                //生成字段名称
                for (int i = 0; i < dgv.ColumnCount; i++)
                {
                    excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
                }
                //填充数据

                for (int i = 0; i < dgv.RowCount-1; i++)
                {
                    for (int j = 0; j < dgv.ColumnCount; j++)
                    {
                        if (dgv[j, i].ValueType == typeof(string))
                        {
                           
                            excel.Cells[i + 2, j + 1] = "" + dgv[j,i].Value.ToString();
                        }
                        else
                        {
                            excel.Cells[i + 2, j + 1] = dgv[j,i].Value.ToString();
                        }
                    }
                }

                return true;
           
        }

        //打印Label中数据
         public void PrintLabel(Label lb, object sender, System.Drawing.Printing.PrintPageEventArgs e,int r,int c)
        {

 

            e.Graphics.DrawString(lb.Text, new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
                 

          
        }
        
        //打印TextBox中数据
        public void PrintTextBox(TextBox tb, object sender, System.Drawing.Printing.PrintPageEventArgs e,int r,int c)
        {
          
          

            e.Graphics.DrawString(tb.Text, new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
                 

          
        }

        //打印ComboBox中数据
        public void PrintComboBox( ComboBox cb, object sender, System.Drawing.Printing.PrintPageEventArgs e, int r, int c)
        {

          

            e.Graphics.DrawString(cb.Text, new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);

 

        }

        //打印DateTimePicker中数据
        public void PrintDateTimePc(DateTimePicker dtp, object sender, System.Drawing.Printing.PrintPageEventArgs e, int r, int c)
        {

 

            e.Graphics.DrawString(dtp.Value.ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);

 

        }

        //执行打印窗体中的数据操作
        public void PrintDGView(DataTable dt,int r,int c,int rstep,int cstep, object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            int row = r;
            int column = c;
            if (dt.Rows.Count > 0)
            {
                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,row,column);
                        row = row+rstep;

                    }
                    row = r;
                    column += cstep;

                }
            }
        }

        //打印DataGridView中数据
        public void PrintDatas(DataTable dt, object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            //打印字段名称
          
                e.Graphics.DrawString(dt.Columns[j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, 20, 20);
            
               ......              
               
          
           
            if (dt.Rows.Count > 0)
            {
                int r = 50;
                int c = 30;
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                   

                    e.Graphics.DrawString(dt.Rows[i][j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, c, r);

                   ......                   

                    c = 30;
                    r += 20;
                  
                }
            }
        }


     

 

 


    }

原创粉丝点击