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


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

主题:[求助] 专业报表

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


加好友 发短信
等级:超级版主 帖子:113259 积分:576730 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/7 11:40:00 [显示全部帖子]

容器不能换页的,改为使用RenderTable吧,我把有关DataTables("小学生健康检查表")表格的代码去掉了,自己改回来即可

Dim doc As New PrintDoc
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight

' 设置页面边距
doc.PageSetting.LeftMargin = 10
doc.PageSetting.RightMargin = 10
doc.PageSetting.TopMargin = 10
doc.PageSetting.BottomMargin = 10

Dim rt As New prt.RenderTable
'rt.Style.GridLines.All = New prt.LineDef
rt.CellStyle.Spacing.All = 1 '单元格内容和网格线距离1毫米
rt.Cols.Count = 1 '总列数为3
doc.Body.Children.Add(rt)
'doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight 
' 获取数据
'Dim Table As DataTable = DataTables("小学生健康检查表")
Dim rowCount As Integer = 50 'Table.DataRows.Count

' 定义5个二维码类型和标题
Dim qrTypes() As String = {"形态二维码", "视力二维码", "五官二维码", "血压二维码", "内科二维码"}
Dim qrTitles() As String = {"形态检查", "视力检查", "五官检查", "血压测量", "内科检查"}

For i As Integer = 0 To rowCount - 1
'    Dim Row As DataRow = Table.DataRows(i)
    Dim studentName As String = "班-" & i 'Row("班次").ToString() & "班-" & Row("姓名").ToString()
    
    ' 创建行容器
    Dim rowContainer As prt.RenderArea = rt.Cells(i, 0).Area
    rowContainer.Stacking = prt.StackingRulesEnum.InlineLeftToRight
'    rowContainer.Width = mainContainer.Width
    rowContainer.Style.Spacing.Right = 2
'    mainContainer.Children.Add(rowContainer)
'doc.Body.Children.Add(rowContainer)
    
    ' 左侧姓名区域
    Dim nameArea As New prt.RenderArea
    nameArea.Width = 20
    nameArea.Height = 25
    nameArea.Style.Padding.All = 1
    
    Dim nameText As New prt.RenderText
    nameText.Text = studentName
    nameText.Style.TextAlignHorz = prt.AlignHorzEnum.Center
    nameText.Style.TextAlignVert = prt.AlignVertEnum.Center
    nameArea.Children.Add(nameText)
    rowContainer.Children.Add(nameArea)
    
    ' 右侧二维码区域
    For j As Integer = 0 To qrTypes.Length - 1
        Dim qrData As String = "Row(qrTypes(j)).ToString()"
        
        Dim label As New prt.RenderArea
        label.Width = 30
        label.Height = 25
        label.Style.Padding.All = 1
        label.Style.Borders.All = New prt.Linedef(0.3, Color.Blue)
        
        Dim rx As New prt.RenderText
        rx.Text = qrTitles(j)
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center
        label.Children.Add(rx)
        
        
        
        '        If Not String.IsNullOrEmpty(qrData) Then
        '            Try
        Dim qr As New BarCodeBuilder
        qr.Symbology = Barpro.Symbology.QRCode
        qr.Code = qrData
        qr.BarRatio = 0.35
        
        Dim img As New prt.RenderImage
        img.Image = qr.GetImage()
        img.Width = 16
        img.Height = 16
        img.X = 6
        img.Y = "Prev.Bottom + 2"
        img.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center
        label.Children.Add(img)

        rowContainer.Children.Add(label)
    Next
Next

doc.Preview()

 回到顶部