以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  打印一张如图所示的签名表,怎么设计?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177443)

--  作者:deliangzhaoe
--  发布时间:2022/5/22 21:25:00
--  打印一张如图所示的签名表,怎么设计?
想设计打印如图所示的签名表:

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





--  作者:有点蓝
--  发布时间: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
--  发布时间:2022/5/23 18:55:00
--  
谢谢蓝老师!