-- 作者:大红袍
-- 发布时间:2015/5/8 12:52:00
--
\'\'\' 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()
|