Foxtable(狐表)用户栏目专家坐堂 → [求助] 专业报表换页


  共有20人关注过本帖树形打印复制链接

主题:[求助] 专业报表换页

帅哥哟,离线,有人找我吗?
zcgmxf
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1667 积分:14886 威望:0 精华:0 注册:2014/6/6 8:42:00
[求助] 专业报表换页  发帖心情 Post By:2025/5/13 22:08:00 [显示全部帖子]

老师,希望班次不同时强制换页,水平有限,弄不好。请指教!谢谢

        Dim tb As Table = Tables("学生体检信息导入_table1")
        Dim ColNames As String() = New String() {"班次", "姓名", "体检编号"} 
        Dim doc As New PrintDoc '定义一个新报表
        
        '添加标题
        Dim rt1 As New prt.RenderText '定义一个文本对象  
        Dim ra As New prt.RenderArea
        rt1.Text = tb.Current("班次") & "班体检名单"
        rt1.Style.Font = New Font("宋体", 14, FontStyle.Bold) '设置标题字体
        rt1.Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题水平居中
        rt1.Height = 8 '高度等于容器高度
        ra.Children.Add(rt1) '加入到容器中
        doc.Body.Children.Add(ra) '将容器加入到报表
        
        Dim rt As New prt.RenderTable '定义一个新表格
        rt.Cols.Count = 3 '设置列数       
        ' 设置表格行高和列宽
        For i As Integer = 0 To tb.Rows.Count - 1
            rt.Rows(i).Height = 8 '设置行高
        Next
        If tb.Rows.Count > 30 Then
            rt.Cols(0).Width = 53 '设置列宽
            rt.Cols(1).Width = 20 '设置列宽
            rt.Cols(2).Width = 10 '设置列宽
            ' 设置表格样式
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '内容水平居中
            rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
            rt.Width = "Auto" '表格宽度为自动
            rt.Style.Font = New Font("宋体", 11) '设置表格字体   
            ' 设置分栏
            doc.Columns.Add() '第一栏
            doc.Columns.Add() '第二栏
            Doc.Columns(0).Width = 80 '第一栏的宽度为60毫米
            Doc.Columns(1).Width = 80 '第一栏的宽度为60毫米
            Doc.Columns(0).Spacing = 10 '栏间距1毫米
        End If
        
        ' 强制换页
        Dim drs As List(Of DataRow) = tb.DataTable.Select("班次 is not  null")
        For ii As Integer = 1 To drs.Count - 1
            If drs(ii)("班次") <> drs(ii - 1)("班次") Then
                Dim rm As New prt.RenderText '定义一个文本对象y 
                rm.BreakAfter = prt.BreakEnum.Column '打印之后另起一栏
                doc.Body.Children.Add(rm) '加入到报表中
            End If
        Next
        
        ' 逐列设置和填入内容
        For c As Integer = 0 To ColNames.Length - 1
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '内容水平居中
            rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
            For r As Integer = 0 To tb.Rows.Count - 1 '开始填入该列内容
                rt.Cells(r, c).Text = tb.Rows(r)(ColNames(c))
            Next
        Next
        
        ' 设置表格样式
        rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线
        rt.CellStyle.Spacing.All = 0.5 '单元格内距设为0.5毫米
        rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
        ' rt.RowGroups(0, 1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头
        doc.PageSetting.LeftMargin = 15 '设置左边距
        doc.PageSetting.RightMargin = 15'设置右边距
        doc.PageSetting.TopMargin = 15 '设置上边距
        doc.PageSetting.BottomMargin = 15 '设置上边距
        doc.Body.Children.Add(rt) ' 将表格加入到报表
        doc.Preview() ' 预览报表

 回到顶部