Vb.net 如何实现报表打印
2011-10-21 08:00
387 查看
报表打印的方法有很多种,比如说先导出office 软件中然后进行排版布局,这样和方便,可是需要导入组件,而且必须安装office。下面我们看一种很实在的方法。提供全部源代码。以供朋友们学习交流。
这种方法也很简单,是使用GDI+ 把数据写到PrintDoucument中的
第一步 先引入命名空间
Imports System
Imports System.Drawing
Imports System.Drawing.Text
第二步 编写PrintDoucument 的Printpage 事件
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
下面 我们将数据表 mytab 中的数据写进PrintDoucument
先定义画笔
Dim arialfont As FontFamily = New FontFamily("arial")
Dim font As Font = New Font(arialfont, 10, FontStyle.Regular)
然后定义页边距
Dim rleft As Single = 10
Dim rtop As Single = e.MarginBounds.Top - 20
获取每一行的高度
Dim lineheight As Single = font.GetHeight(e.Graphics)
获取Mytab的行数和列数
Dim col As Integer = Mytab.Columns.Count
Dim row As Integer = Mytab.Rows.Count
获取Mytab的字段名称
Dim headline As String = ""
For i As Integer = 1 To col - 1
Dim coltext As String = Mytab.Columns(i).ColumnName.ToString
headline = headline & coltext & Space(1)
Next
获取要打印的数据
Dim listviewrows As String()
ReDim listviewrows(Me.ListView1.Items.Count + 1)
For i As Integer = 0 To row - 1
Dim lentext As String = ""
For j As Integer = 1 To col - 1
Dim maxlen As Integer = liewidth(j - 1)
Dim coltext As String
coltext = Mytab.Rows(i).item(j).ToString
lentext = lentext & coltext & Space(3)
Next
listviewrows(i) = lentext
Next
接下来就是真正的写入数据
Do
e.Graphics.DrawString(listviewrows(counts), font, Brushes.Black, rleft, rtop)
counts = counts + 1
rtop = rtop + lineheight
Loop Until rtop > e.MarginBounds.Bottom Or counts >= Mytab.Rows.Count - 1
If counts < Mytab.Rows.Count - 1 Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
END Sub
写好以后,就可以打印了
PrintDoucument.print()
到此就可以把数据表Mytab中的所有数据打印出来了
这种方法也很简单,是使用GDI+ 把数据写到PrintDoucument中的
第一步 先引入命名空间
Imports System
Imports System.Drawing
Imports System.Drawing.Text
第二步 编写PrintDoucument 的Printpage 事件
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
下面 我们将数据表 mytab 中的数据写进PrintDoucument
先定义画笔
Dim arialfont As FontFamily = New FontFamily("arial")
Dim font As Font = New Font(arialfont, 10, FontStyle.Regular)
然后定义页边距
Dim rleft As Single = 10
Dim rtop As Single = e.MarginBounds.Top - 20
获取每一行的高度
Dim lineheight As Single = font.GetHeight(e.Graphics)
获取Mytab的行数和列数
Dim col As Integer = Mytab.Columns.Count
Dim row As Integer = Mytab.Rows.Count
获取Mytab的字段名称
Dim headline As String = ""
For i As Integer = 1 To col - 1
Dim coltext As String = Mytab.Columns(i).ColumnName.ToString
headline = headline & coltext & Space(1)
Next
获取要打印的数据
Dim listviewrows As String()
ReDim listviewrows(Me.ListView1.Items.Count + 1)
For i As Integer = 0 To row - 1
Dim lentext As String = ""
For j As Integer = 1 To col - 1
Dim maxlen As Integer = liewidth(j - 1)
Dim coltext As String
coltext = Mytab.Rows(i).item(j).ToString
lentext = lentext & coltext & Space(3)
Next
listviewrows(i) = lentext
Next
接下来就是真正的写入数据
Do
e.Graphics.DrawString(listviewrows(counts), font, Brushes.Black, rleft, rtop)
counts = counts + 1
rtop = rtop + lineheight
Loop Until rtop > e.MarginBounds.Bottom Or counts >= Mytab.Rows.Count - 1
If counts < Mytab.Rows.Count - 1 Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
END Sub
写好以后,就可以打印了
PrintDoucument.print()
到此就可以把数据表Mytab中的所有数据打印出来了
相关文章推荐
- Vb.net 如何实现报表打印
- [VB.NET]PrintDocument如何打印水晶报表喔?
- [VB.NET]条码打印如何实现?(vb.net)
- ASP.NET 水晶报表打印功能实现代码
- [VB.NET]资源管理器如何用.net2005实现
- [VB.NET]如何在水晶报表里设置自定义纸张,如何在WinXP里设置纸张?
- [VB.NET]如何在DataGridView中实现多列排序?大于2列的,可以有很多列的排序?(急)
- 在水晶报表中实现任意选择指定字段显示 (vb.net vs2003)
- VB.NET小报表(收据)打印
- 请问vb.NET中如何打印一个某一固定区域的内容?
- VB.net中实现打印窗体
- [VB.NET源码]实现打印DataGrid列表的示例
- asp.net中如何打印ReportViewer报表
- 章鱼哥—VB.NET 如何实现代码自动生成控件 添加绑定事件
- jsp如何实现报表打印功能?简单点,不要太复杂的。在此先谢谢各位大虾。。。
- vb.net如何打印文档
- 如何编程实现VB.NET数据集中的数据导出到EXCEL
- [VB.NET]请问高手如何用VB2005调用系统默认连接实现自动拨号,谢谢!
- [VB.NET]VB.NET中如何实现QQ消息的效果?
- [VB.NET]请问如何在picturebox中实现幻灯片查看图片效果