分页汇总
打开CaseStudy目录下的文件:统计演示.Table
现在希望打印订单表,每页20行,每页最后一行显示数量和金额的小计,最后一页还要添加一行用于显示数量和金额的小计。
代码如下:
Dim
doc
As New
PrintDoc
Dim tb
As
Table =
Tables("订单")
Dim prs
As
Integer
= 20
'每页20行
Dim
sum1 As
Integer
= 0
'数量小计
Dim
sum2 As
Double =
0
'金额小计
Dim
tsum1 As
Integer
= 0
'数量总计
Dim
tsum2 As
Double =
0
'金额总计
Dim
idx1 As
Integer=
tb.cols("数量").Index
Dim
idx2 As
Integer=
tb.cols("金额").Index
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
sum1
=
0
sum2
=
0
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)
sum1
=sum1
+
tb.rows(r)("数量")
sum2
=sum2
+
tb.rows(r)("金额")
For
c
As
Integer
=
0
To
tb.Cols.Count
-
1
rt.Cells(r
-
p
*
prs
+
1,
c).Text
=
tb.rows(r)(c)
Next
Next
tsum1
=
tsum1
+
sum1
tsum2
=
tsum2
+
sum2
rt.Rows.Count
=
rt.Rows.Count
+
1
'增加本页小计行
rt.Rows(rt.Rows.count
-1)(0).text
=
"本页小计"
rt.Rows(rt.Rows.count
-1)(idx1).text
=
sum1
rt.Rows(rt.Rows.count
-1)(idx2).text
=
sum2
If
p
=
math.Ceiling(tb.Rows.Count
/
prs)
-
1
'如果是最后一页
rt.Rows.Count
=
rt.Rows.Count
+
1
'增加总计行
rt.Rows(rt.Rows.count
-1)(0).text
=
"总计"
rt.Rows(rt.Rows.count
-1)(3).text
=
tsum1
rt.Rows(rt.Rows.count
-1)(6).text
=
tsum2
Else
rt.BreakAfter
= prt.BreakEnum.Page
'否则换页
End If
doc.Body.Children.Add(rt)
Next
doc.Preview()