Foxtable(狐表)用户栏目专家坐堂 → 打印一张如图所示的签名表,怎么设计?


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

主题:打印一张如图所示的签名表,怎么设计?

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


加好友 发短信
等级:小狐 帖子:364 积分:3491 威望:0 精华:0 注册:2012/7/24 7:15:00
打印一张如图所示的签名表,怎么设计?  发帖心情 Post By:2022/5/22 21:25:00 [只看该作者]

想设计打印如图所示的签名表:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220522211710.png
图片点击可在新窗口打开查看
代码如何写?
要求:序号顺序填充1-69,姓名有几人填充几人,小于23人时,在第二列,小于46人时,填充完第二列再填充第五列,依次类推,大于69人时,到下一页,签字列空白。
自己写了点代码,不对,哪位老师帮忙改一下,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档 (2).txt





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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/22 21:53:00 [只看该作者]

参考:http://www.foxtable.com/webhelp/topics/2241.htm,其它细节的东西自己处理

Dim doc As New PrintDoc
Dim tb As Table = Tables("表A")
Dim prs As Integer = 69 
Dim caps() As String = {"序号", "姓名", "签字", "序号", "姓名", "签字", "序号", "姓名", "签字"}
For p As Integer = 0 To math.Ceiling(tb.Rows.Count / prs) - 1
    Dim rx As New prt.RenderText
    rx.Text = "公司活动签名表"
    rx.Style.Font = New Font("宋体", 16, FontStyle.Bold)
    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rx.Style.Spacing.Bottom = 3
    Doc.body.Children.Add(rx)
    Dim rt As New prt.RenderTable
    rt.Cols.Count = 9
    rt.Cols(0).Width = 10 '设置各列宽度
    rt.Cols(1).Width = 15
    rt.Cols(2).Width = 20
    rt.Cols(3).Width = 10
    rt.Cols(4).Width = 15
    rt.Cols(5).Width = 20
    rt.Cols(6).Width = 10
    rt.Cols(7).Width = 15
    rt.Cols(8).Width = 20
    rt.Style.Gridlines.All = New prt.Linedef(Color.Gray)
    rt.CellStyle.Spacing.All = 0.5
    
    rt.Cells(0, 0).SpanCols = 2
    rt.Cells(0, 0).Text = "企业名称"
    rt.Cells(0, 2).SpanCols = 3
    rt.Cells(0, 2).Text = "xxx" 'rw("企业名称")
    rt.Cells(0, 5).SpanCols = 2
    rt.Cells(0, 5).Text = "活动日期"
    rt.Cells(0, 7).SpanCols = 2
    rt.Cells(0, 7).Text = "2022-05-22" 'rw("培训时间")
    rt.Cells(1, 0).SpanCols = 2
    rt.Cells(1, 0).Text = "培训主题"
    rt.Cells(1, 2).SpanCols = 7
    rt.Cells(1, 2).Text = "xxx" 'rw("培训主题")
    Dim idx As Integer = 2
    For c As Integer = 0 To caps.Length - 1
        rt.Cells(idx, c).Text = caps(c)
    Next 
    idx = 3
    Dim cl As Integer = 0
    Dim i As Integer = 1
    For r As Integer = p * prs To math.min(tb.Rows.Count - 1, ( p + 1) * prs - 1)
        If idx >= 26 Then
            idx = 3
            cl = cl + 3
        End If 
        rt.Cells(idx, cl).Text = i
        rt.Cells(idx, cl + 1).Text = tb.rows(r)("姓名")
        idx += 1
        i += 1
    Next
    If p < math.Ceiling(tb.Rows.Count / prs) - 1 Then
        rt.BreakAfter = prt.BreakEnum.Page
    End If
    doc.Body.Children.Add(rt)
Next
doc.Preview()

 回到顶部
帅哥哟,离线,有人找我吗?
deliangzhaoe
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:364 积分:3491 威望:0 精华:0 注册:2012/7/24 7:15:00
  发帖心情 Post By:2022/5/23 18:55:00 [只看该作者]

谢谢蓝老师!

 回到顶部