Dim doc As New PrintDoc \'定义一个专业报表
Dim rt As prt.RenderTable \'定义一个表格
Dim rx As prt.RenderText \'定义一个文本
Dim tbl As Table = Tables("病害统计表") \'定义一个表
Dim Rows As List(Of DataRow) \'定义行集合
\'Dim Regions As List(Of String) = tbl.DataTable.GetValues("桥梁名称") \'从指定列中,获取不重复的值,以集合的形式返回.
Dim Regions As List(Of String()) = tbl.DataTable.GetValues("桥梁名称|桥梁代码|部件名称") \'从指定列中,获取不重复的值,以集合的形式返回.
doc.Pagesetting.Landscape = False
For Each Region As String() In Regions
rx = New prt.RenderText
rx.Style.FontSize = 14
rx.Style.FontBold = True \'字体加粗
rx.Style.Spacing.Bottom = 2 \'设置下间隔为2毫米
\'rx.Text = "桥梁名称: " & Region
rx.Text = Region(1) & Region(0) & " " & Region(2)
doc.Body.Children.Add(rx) \'加入到报表中
rt = New prt.RenderTable
rt.Style.Font = Tables("病害统计表").Font
rt.Style.TextAlignVert = prt.AlignVertEnum.Center
rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
rt.Style.Spacing.Bottom = 5
rt.CellStyle.Spacing.All = 1
rt.Style.Font = tbl.Font
Rows = tbl.DataTable.Select("[桥梁名称] = \'" & Region(0) & "\'and [部件名称] = \'" & Region(2) & "\'")
For c As Integer = 4 To tbl.Cols.Count - 1
rt.Cells(0,c).Text = tbl.Cols(c).Name
rt.Cols(c).Width = tbl.Cols(c).PrintWidth
For r As Integer = 0 To Rows.Count -1
rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(c).Name)
Next
Next
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All
doc.Body.Children.Add(rt)
Next
doc.preview()