如何在C#中实现DATAGRIDVIEW 数据打印

如何在C#中实现DATAGRIDVIEW 数据打印

分享下关于 C#中 实现打印功能的代码   希望对初学者有所帮助

关于打印格式感觉很痛苦 我一般选择两种方式 一种是通过 DRAWING 格式,另外一种通过HTML代码来控制,都特别麻烦,不知道各位高手能否提供一些更好的建议?

第一步 基本操作

定义 一个C#提供的 PrintDocument 对象

private PrintDocument printDocument;

第二步

//写一个方法 对打印事件进行初始化

下载: Init.cs
  1. private void PrintDocument ()
  2. {
  3. printDocument = new   PrintDocument () ;
  4. printDocument . PrintPage += new   PrintPageEventHandler ( printDocument_PrintPage ) ;
  5. }

第三步

事件响应方法

下载: Action.cs
  1. private void printDocument_PrintPage ( object sender , PrintPageEventArgs e )
  2. {
  3. //StringReader lineReader = new StringReader(textBox.Text);
  4. Graphics   graphic = e . Graphics ; //获取绘图对象
  5. float linesPerPage = 0 ; //页面行号
  6. float yPosition = 0 ; //绘制字符串的纵向位置
  7. float leftMargin = e . MarginBounds . Left ; //左边距
  8. float topMargin = e . MarginBounds . Top ; //上边距
  9. string   line = string . Empty ; //读取的行字符串
  10. int currentPageLine = 0 ; //当前页读取的行数
  11. Font   charFont = button1 . Font ; //获取打印字体
  12. SolidBrush   brush = new SolidBrush ( Color . Black ) ; //刷子
  13. linesPerPage = e . MarginBounds . Height / charFont . GetHeight ( graphic ) ; //每页可打印的行数
  14. //countNum记录全局行数,currentPageLine记录当前打印页行数。
  15. // graphic.DrawString("水费通知单", charFont, brush, 360, 100, new StringFormat());
  16.  
  17. //房产地址textbox3
  18. //租户名字textbox2
  19. // 上次缴费记录 textbox5
  20. //费用到期 textbox7
  21. //合同开始时间 textbox4
  22. //合同到期时间 textbox6
  23. //月租金 textbox8
  24. //月管理费 textbox9
  25. //缴费租金 textbox11
  26. //缴费管理费 textbox10
  27. //总计   textbox12
  28.  
  29. graphic . DrawString ( " 武大教育发展有限公司房屋租金缴费登记 " , charFont , brush , 300 , 100 , new   StringFormat ()) ;
  30. graphic . DrawString ( " 租户:         " + this . textBox2 . Text , charFont , brush , 100 , 140 , new   StringFormat ()) ;
  31. graphic . DrawString ( " 合同号:       " + this . textBox1 . Text , charFont , brush , 100 , 180 , new   StringFormat ()) ;
  32. graphic . DrawString ( " 房产地址:     " + this . textBox3 . Text , charFont , brush , 100 , 220 , new   StringFormat ()) ;
  33. graphic . DrawString ( " 月租金:       " + this . textBox8 . Text , charFont , brush , 100 , 260 , new   StringFormat ()) ;
  34. graphic . DrawString ( " 月管理费:     " + this . textBox9 . Text , charFont , brush , 100 , 300 , new   StringFormat ()) ;
  35. graphic . DrawString ( " 上次缴费至:   " + this . textBox7 . Text , charFont , brush , 100 , 340 , new   StringFormat ()) ;
  36. graphic . DrawString ( " 本次缴费至:   " + this . dateTimePicker1 . Text , charFont , brush , 100 , 370 , new   StringFormat ()) ;
  37. graphic . DrawString ( " 租金:         " + this . textBox11 . Text , charFont , brush , 100 , 410 , new   StringFormat ()) ;
  38. graphic . DrawString ( " 管理费:       " + this . textBox10 . Text , charFont , brush , 100 , 450 , new   StringFormat ()) ;
  39. graphic . DrawString ( " 合计:         " + this . textBox12 . Text , charFont , brush , 100
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注意:本3.0版控件过于老旧,该控件最新版本为4.7版,您可以到http://myyouping.download.csdn.net/免费下载,也是完全免费的,没有任何功能及使用时间限制,0积分下载。我将3.0版控件的下载分提为10分,是希望大家使用最新版的控件。 控件特色: 1、超强大的DataGridView打印功能,不光可以以多种形式(普通打印、分栏打印、跨页打印、工资条打印打印DataGridView表格,基本上能完全按DataGridView控件本身设置的格式如字体、字号、背景颜色、前景颜色、单元格对齐方式等打印出来,文字图像都可以打印,而且是完全根据表格当前的显示顺序进行打印的,如果您在使用时调整了列的顺序,刷新打印后就会按调整后的列显示顺序进行打印(这是网上很多DataGridView打印控件没有实现的),基本上做到了所见即所得的打印。 2、强大的文本打印输出功能,打印文本时,如果需要,控件会自动换行或换页打印输出。 3、支持同一文档多种版面格式打印(类似于Word的节的功能):对同一份文档,不同的页面可以设置不同的格式(纸张大小、纸张方向、页边距),只需要在新增一页时在NewPage方法指定要使用的页面格式即可,使用非常简单。 4、报表功能。本控件允许将当前打印预览的内容保存为报表文件,以后使用本控件重新打开该报表文件即可重现原来保存报表时的打印内容。 5、打印方案保存与读取功能。可以将当前打印参数保存为打印方案文件,或都从保存的打印方案文件读取打印参数。 6、水印功能。根据需要,可以在页面打印或不打印以半透明空心文字打印水印。 7、特殊文字效果功能。本版控件具有打印浮雕文字、阴影文字、空心文字、块文字的功能,效果非常不错。 8、页眉页脚既可打印文字,也可打印图像,或者即打印图像又打印输出文字。 9、图像打印输出功能。 本控件包括两个打印组件:DGVprint打印组件与VB2008print打印组件。VB2008Print为通用打印控件(为可视化组件),可以混合打印一个或多个DataGridView表格、DataGrid表格与文字、图片等内容;而DGVprint是以VB2008Print为基础开发的(为非可视化组件),为专用的表格打印控件,可以很方便打印单个DatatGridview、DataGrid、DataTable表格的内容,并提供打印时的可视化设置界面,可设置表格打印方式(普通打印、分栏打印、跨页打印、工资条打印)、标题内容及字体、页眉页脚、选择要打印的表格列、列顺序调整及列格式设置、更改列标题名称等,使用非常方便,功能非常强大。 与本控件的上一个版本2.1版相比,本版控件新增功能如下: VB2008Print打印组件新增功能: 1、多种特效文字打印输出功能,能打印的特效文字有 空心文字、浮雕文字、块文字、阴影文字等。 2、水印打印功能。可以在面页以半透明空心文字的形式打印背景水印,只需要简单设置控件的WaterMarkText等几个以WaterMark开头的属性即可,程序会自动打印水印。 3、PrintDGV函数可直接使用DGVPrint组件保存的打印方案文件打印输出DataGridView表格, 4、在页眉页脚不光可以打印文本,还可以打印图像,文本与图像可同时打印(即在图像上显示文本)。此外,页眉页脚文字可以换行打印了,页面的左边也右边距也可以打印内容了(调用相应的函数PrintLeft与PrintRight实现)。 5、改进DrawText函数输出文本的功能,现在,即便调用没有指定打印区域或打印宽度的DrawText函数输出文本,打印输出时控件也会智能换行和换页(原版本是需要指定打印宽度才能自动换行换页打印的) 6、改进DrawImage与DrawCellImage输出图像功能,如果图像比较小(小于打印区域大小),可以不进行放大打印。(但如果图像大于打印区域的话,还是采用整体缩小打印,而不是区域剪裁打印)。 7、增加IsShowPrintStatusDialog属性,指示在发送到打印打印时,是否显示一个指示正在打印的状态窗口(可以取消打印),为TRUE表示要显示,为False表示不显示。 8、改进页眉页脚事件,将原来的HeaderOut与FooterOut统一为HeaderFooterOut事件,在该事件,您可以调用PrintFooter、PrintHeader、PrintLeft、PrintRight函数分别打印上下左右的页眉。(PrintLeft与PrintRight函数为新增加的,用于在左边与右边页边距处输出内容) DGVPrint打印组件新增功能: 1、打印方案保存与读取功能。本版控件可以将您的可视化设置(包括列格式设置等)全部保存为打印方案文件(文本文件,您可以用记事本打开并修改),并有读取方案文件的功能,不再需要每次都进行打印格式设置了,一劳永逸! 2、直接调用打印方案文件打印功能。您不光可以设计DGVPrint打印组件的属性来进行打印,还可以直接调用DGVPrint组件保存的打印方案文件,直接利用保存的方案文件的参数进行打印预览输出。 3、新增在可视化打印参数设置界面的列标题重命名功能,可能修改列标题要打印的名字。 4、水印打印功能。如果水印文本设置为空,则不打印水印。 5、导出数据成Excel功能。暂未提供该功能的函数接口,只在打印参数设置窗口增加了一个数据导出的按钮,可以将当前要打印DataGridView的内容导出成Excel文件。该功能以后会进一步完善。 6、在进行页眉页脚文本设置时,可以用 [页码] 代表要输出的当前页码,用 [总页数] 代表要输出总页数,控件在进行输出时,会自动将其转换为对应的页码与文档总页数。
### 回答1: 您好,以下是使用C#打印DataGridView数据的步骤: 1. 创建一个PrintDocument对象。 2. 在PrintDocument的PrintPage事件,使用Graphics对象将DataGridView绘制到打印页面上。 3. 在DataGridView的CellPainting事件,设置单元格的边框和背景色。 4. 调用PrintDocument的Print方法,将打印页面输出到打印机。 具体实现可以参考以下代码: private void btnPrint_Click(object sender, EventArgs e) { // 创建PrintDocument对象 PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); // 显示打印对话框 PrintDialog pdlg = new PrintDialog(); pdlg.Document = pd; if (pdlg.ShowDialog() == DialogResult.OK) { pd.Print(); } } private void pd_PrintPage(object sender, PrintPageEventArgs e) { // 绘制DataGridView Bitmap bmp = new Bitmap(dgvData.Width, dgvData.Height); dgvData.DrawToBitmap(bmp, new Rectangle(, , dgvData.Width, dgvData.Height)); e.Graphics.DrawImage(bmp, e.MarginBounds); // 设置单元格的边框和背景色 foreach (DataGridViewRow row in dgvData.Rows) { foreach (DataGridViewCell cell in row.Cells) { e.Graphics.DrawRectangle(Pens.Black, cell.DataGridView.GetCellDisplayRectangle(cell.ColumnIndex, cell.RowIndex, false)); e.Graphics.FillRectangle(Brushes.White, cell.DataGridView.GetCellDisplayRectangle(cell.ColumnIndex, cell.RowIndex, false)); } } } ### 回答2: 对于“c”,根据不同的语境和领域,它可以有不同的含义和应用。以下是一些可能的解释和说明: 1. 在计算机科学,C是一种广泛应用的程序设计语言,由Dennis Ritchie在20世纪70年代开发。C语言具有高效、灵活、可移植等特点,在系统编程、嵌入式设备、科学计算、游戏开发等领域广泛应用。许多其他编程语言,如C++、Java、Python等,都在不同程度上受到C语言的影响。 2. 在化学,C是碳元素的符号,是自然界广泛存在的元素之一。碳元素在生命体起着重要的作用,能组成生物分子的骨架,如蛋白质、核酸、多糖等。同时,碳还是燃料、材料、电子器件等许多领域的重要原料。 3. 在音乐,C是西方音乐谱系(tonic sol-fa)的一个音高符号,代表着基本的音调“do”。C音在钢琴上是央C(middle C),频率大约为261.63赫兹。在音乐理论,C还有时被用来代表音阶或调式的名称,如C大调、C小调等。 4. 在物理学,C是光速的符号,代表着真空光线的传播速度,约为299,792,458米每秒。光速在许多领域都是基本的物理常数,如相对论、天文学、量子力学等。 5. 在统计学,C是相关系数(correlation coefficient)的符号,用来度量两个变量之间的相关程度。C的取值范围在-1到1之间,如果C为正,表示两个变量之间呈正相关,如果C为负,则表示呈负相关,如果C接近于0,则表示没有明显相关性。 综上所述,C是一个多义的符号,其含义和应用因领域和语境而异。了解C的不同意义和用法可以帮助人们更好地理解和应用相关知识。 ### 回答3: C是计算机科学一种基本的编程语言,由美国贝尔实验室的Dennis Ritchie于1972年发明。它在历史上是一个重要的编程语言,被广泛用于系统编程和应用程序开发,例如操作系统和各种软件。 C语言的特点是简单高效,易于掌握,执行速度快,占用内存少。C语言具有良好的可移植性,可以运行在各种操作系统和处理器架构上。因此,C语言常被用于编写底层代码和系统软件,例如操作系统内核、编译器、数据库等等。 C语言的语法设计精简,由少量的特殊符号和关键字组成,同时拥有强大的语言表达能力。C语言支持函数式编程风格,可以通过函数模块化和抽象来实现复杂任务的分解和解决。 随着计算机技术的发展,许多其他编程语言也被发明和使用,例如Java、Python、Swift等等,但C语言在计算机科学领域仍然具有重要的地位,仍然是许多编程语言的基础和核心之一。 虽然学习C语言需要一定的编程基础和逻辑思维能力,但C语言具有良好的可读性和语言规范,可以帮助开发者编写高效、稳定、安全的软件系统。因此,C语言的学习对于从事软件开发和计算机科学领域的人员来说是十分有必要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值