'''
Dim g As New CrossTableBuilder("物资统计表", DataTables("物资需求计划明细"))
g.HGroups.AddDef("项目名称","工程项目名称")
g.HGroups.AddDef("计划编号")
g.HGroups.AddDef("材料名称","物资名称")
g.HGroups.AddDef("规格型号","技术要求条件")
g.HGroups.AddDef("单位")
g.HGroups.AddDef("备注")
g.VGroups.AddDef("单位工程名称")
g.Totals.AddDef("数量", "数量")
g.filter = Tables("物资需求计划明细").filter
g.HorizontalTotal = True
g.Build()
Tables("物资统计表").Cols("合计").Move(5)
Tables("物资统计表").Cols("备注").Move(Tables("物资统计表").cols.Count-1)
Dim doc As New PrintDoc
Doc.PageSetting.LeftMargin = 20 '设置左边距
Doc.PageSetting.RightMargin = 15 '设置右边距
Doc.PageSetting.TopMargin = 15 '设置上边距
Doc.PageSetting.BottomMargin = 15 '设置下边距
Dim rt As Prt.RenderTable
Dim rm As New prt.RenderImage() '定义一个图片对象
rm.Image = GetImage(ProjectPath & "images\中国中铁.png") '请改为实际的图标名称和路径
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '图片水平居中
rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center '图片垂直居中
Dim tbl As Table = Tables("物资统计表")
Dim Rows As List(Of DataRow)
Dim Datas As List(Of String()) = tbl.DataTable.GetValues("工程项目名称|计划编号",tbl.Filter)
doc.Pagesetting.LandScape = True
'设置页眉
rt = New prt.RenderTable
rt.Cells(0,0).Text = "主要物资需用限(定)额数量总计划表"
rt.Cells(1,0).RenderObject = rm '将单元格内容设置为图片对象rm
rt.Cells(1,1).Text = " 主要物资需用限(定)额数量总计划表"
rt.Cells(1,2).Text = "表格编号:"
rt.Cells(2,2).Text = "0902"
rt.Cols(2).Width = 60
rt.Cols(0).Width = 16
rt.Cells(1,1).Style.TextAlignvert = prt.AlignVertEnum.Center
rt.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.Cols(2).Style.TextAlignvert = prt.AlignvertEnum.Center
rt.rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center
'设置合并单元格
rt.Cells(0,0).Spancols = 3 '第1行第5个单元格向下合并6行(用于显示照片)
rt.Cells(1,1).Spanrows =2 '第5行第2个单元格向右合并3列(用于显示地址)
rt.Cells(1,0).Spanrows =2 '第5行第2个单元格向右合并3列(用于显示地址)
rt.Rows(1).Height = 8
rt.Rows(2).Height = 8
rt.Style.Gridlines.All = New prt.Linedef(Color.black) '黑色网格线
rt.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
rt.Style.FontSize = 12 '字体大小为8磅
rt.Cells(0,0).Style.FontSize = 18 '字体大小为8磅
rt.Cells(0,0).Style.FontBold = True '字体加粗
rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
rt.Rows(0).Style.Borders.Bottom = New prt.Linedef '恢复第二行底端的网格线
rt.cols(0).Style.GridLines.right = New prt.Linedef("0mm", Color.white) '去掉第一行底端的网格线
Doc.PageHeader = rt '作为页眉使用
'设置页脚
rt = New prt.RenderTable
rt.Cells(0,0).Text = "技术负责人:"
rt.Cells(0,2).Text = "审核人:"
rt.Cells(0,4).Text = "编制人:"
rt.Cells(0,6).Text = "物资部接收人:"
rt.Cells(0,8).Text = "日期: 年 月 日"
rt.Cols(6).Width = 30
rt.Cols(8).Width = 40
rt.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
rt.Cols(8).Style.TextAlignHorz = prt.AlignHorzEnum.right
rt.Style.FontSize = 10 '字体大小为8磅
Doc.PageFooter = rt '作为页脚使用
For j As Integer = 0 To datas.count - 1
Dim data() As String = datas(j)
Dim n As Integer = Tables("物资统计表").cols.Count
rt = New prt.RenderTable
rt.Style.FontSize = 10
rt.Style.Spacing.Top = 0
rt.Style.Spacing.Bottom = 0
rt.Cells(0, 0).Text = " 工程项目名称: " & Data(0) & " 计划编号: " & Data(1)
rt.Cells(0,0).Spancols =n-1
rt.Cells(1, 0).text = "物资编号"
For i As Integer = 2 To n-1
rt.Cells(1, i-1).text = Tables("物资统计表").cols(i).Caption
Next
Dim drs As List(Of DataRow) = DataTables("物资统计表").Select("计划编号 = '" & data(1) & "'")
For r As Integer = 0 To drs.Count-1
Dim dr As DataRow = drs(r)
rt.Cells(r+2, 0).text = r + 1
For i As Integer = 2 To n-1
rt.Cells(r+2, i-1).text = dr(Tables("物资统计表").cols(i).name)
Next
Next
'补空行
For i As Integer = drs.Count To 20
rt.Cells(i+2, 0).text = " "
Next
'换页
If j < Datas.Count - 1 Then
rt.BreakAfter = prt.BreakEnum.page
End If
rt.CellStyle.Spacing.All = 0.5 '单元格内距设为0.5毫米
rt.Rows(0).Height = 8
rt.Cols(0).Width = 10
rt.Cols(3).Width = 15
rt.Cols(4).Width = 15
rt.Style.TextAlignHorz = prt.AlignHorzEnum.center '所有文本内容靠右对齐
rt.Style.TextAlignVert = prt.AlignVertEnum.center '所有文本内容垂直居中
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.left '第一行内容水平居中
rt.RowGroups(0, 2).Header = prt.TableHeaderEnum.All '利用行组功能设置表头
rt.Style.Gridlines.All = New prt.Linedef(Color.black) '黑色网格线
rt.Rows(0).Style.GridLines.Vert = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
rt.Rows(0).Style.GridLines.Top = New prt.Linedef("0mm", Color.white) '去掉第一行底端的网格线
doc.Body.Children.Add(rt)
Next
doc.preview()