Dim doc As New PrintDoc Dim rt As New prt.RenderTable Dim tb As Table = Tables("入库明细") Dim ColNames As String() = New String(){"日期","商品名称","单价","数量","金额","往来单位","小计","电话号码"} 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 >=5 AndAlso c <=7 Then Dim Merge As Boolean = True If r = 0 Then Merge = False Else For n As Integer = 5 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.Preview()
|