Dim doc As PrintDoc = e.Form.gernateprintdoc()
Dim rt As New prt.RenderTable
Dim tb As Table = Tables("生产单_table1")
Dim ColNames As String() = New String(){"订单品名规格", "颜色意见","客户款号","客户订单号","订单重量"}
Dim MergeCols As Integer = 2 '指定要合并的列数
tb.Sort = "订单品名规格,颜色意见" '根据合并列排序
rt.Width = "Auto"
rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded
rt.Style.Font = tb.Font
rt.Style.TextAlignVert = prt.AlignVertEnum.Center
rt.RepeatGridLinesVert = True '换页后重复表格线
For c As Integer = 0 To ColNames.Length - 1
Dim lr As Integer ' 用于保存合并区域的起始行
rt.Cells(0,c).Text = ColNames(c)
rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth
If tb.Cols(ColNames(c)).IsNumeric OrElse tb.Cols(ColNames(c)).IsDate Then
rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Right
End If
For r As Integer = 0 To tb.Rows.Count - 1
If c <= MergeCols - 1 Then '如果是要合并的列
Dim Merge As Boolean = True
If r = 0 Then
Merge = False
Else
For n As Integer = 0 To c
If tb.Rows(r)(ColNames(n)) <> tb.Rows(r - 1)(ColNames(n))
Merge = False
Exit For
End If
Next
End If
If Merge Then
rt.Cells(lr,c).SpanRows = rt.Cells(lr,c).SpanRows + 1
Else
rt.Cells(r + 1, c).Text = tb.Rows(r)(ColNames(c))
rt.Cells(r + 1, c).VertSplitBehavior = prt.CellSplitBehaviorEnum.Copy '换页后重复单元格
lr = r + 1
End If
Else
rt.Cells(r + 1, c).Text = tb.Rows(r)(ColNames(c))
End If
Next
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray)
rt.CellStyle.Spacing.All = 0.5
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All
doc.Body.Children.Add(rt)
doc.PageSetting.Landscape = True '横向打印
doc.Preview()