以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 凑成偶数页打印,并填充空白行 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186587) |
-- 作者:foxtablefanse -- 发布时间:2023/5/13 16:53:00 -- 凑成偶数页打印,并填充空白行 如果总页数是单数,加空白页凑成双数页,并填充空白行,怎么改代码? Dim doc As New PrintDocDim tb As Table = Tables("订单") Dim prs As Integer = 20 \'每页20行 For p As Integer = 0 To math.Ceiling(tb.Rows.Count / prs) - 1 Dim rt As New prt.RenderTable rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) rt.CellStyle.Spacing.All = 0.5 For c As Integer = 0 To tb.Cols.Count - 1 rt.Cells(0,c).Text = tb.Cols(c).Name Next For r As Integer = p * prs To math.min(tb.Rows.Count - 1,( p + 1) * prs - 1) For c As Integer = 0 To tb.Cols.Count - 1 rt.Cells(r - p * prs + 1, c).Text = tb.rows(r)(c) Next Next If p = math.Ceiling(tb.Rows.Count / prs) - 1 \'如果是最后一页 For r As Integer = tb.Rows.Count To ( p + 1) * prs - 1 \'补空行 rt.Rows.Count = rt.Rows.Count + 1 rt.Rows(rt.Rows.count -1)(0).text = " " Next Else rt.BreakAfter = prt.BreakEnum.Page \'否则换页 End If doc.Body.Children.Add(rt) Next doc.Preview() |
-- 作者:有点蓝 -- 发布时间:2023/5/13 17:41:00 -- Dim doc As New PrintDoc Dim tb As Table = Tables("订单") Dim prs As Integer = 20 \'每页20行 Dim cnt As Integer = math.Ceiling(tb.Rows.Count / prs) Output.Show(cnt) For p As Integer = 0 To cnt - 1 Dim rt As New prt.RenderTable rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) rt.CellStyle.Spacing.All = 0.5 For c As Integer = 0 To tb.Cols.Count - 1 rt.Cells(0, c).Text = tb.Cols(c).Name Next For r As Integer = p * prs To math.min(tb.Rows.Count - 1, ( p + 1) * prs - 1) For c As Integer = 0 To tb.Cols.Count - 1 rt.Cells(r - p * prs + 1, c).Text = tb.rows(r)(c) Next Next If p = math.Ceiling(tb.Rows.Count / prs) - 1 Then\'如果是最后一页 For r As Integer = tb.Rows.Count To ( p + 1) * prs - 1 \'补空行 rt.Rows.Count = rt.Rows.Count + 1 rt.Rows(rt.Rows.count - 1)(0).text = " " Next End If rt.BreakAfter = prt.BreakEnum.Page \'否则换页 doc.Body.Children.Add(rt) Next If cnt Mod 2 = 1 Then Dim rt As New prt.RenderTable rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) rt.CellStyle.Spacing.All = 0.5 For c As Integer = 0 To tb.Cols.Count - 1 rt.Cells(0, c).Text = tb.Cols(c).Name Next For r As Integer = 1 To 20 \'补空行 rt.Rows.Count = rt.Rows.Count + 1 rt.Rows(rt.Rows.count - 1)(0).text = " " Next doc.Body.Children.Add(rt) End If doc.Preview() |