连续打印资料卡
本节还是打印员工资料卡,不过这次不是打印当前行,而是打印所有选定行。
每一个员工资料卡都是一个整体,不能因为换页而被分割,但是问题来了,因为一个资料卡包括两个对象:标题和表格,而我们只能禁止一个对象被分割,这样就可能导致标题和表格处在不同的页面中。
为解决这个问题,我们将标题和表格放在一个容器(RenderArea)中,一个容器就是一个资料卡,这样只需禁止容器被垂直分割即可。
请在员工表中选定多行,然后执行下面的代码:
Dim
doc
As New PrintDoc
'定义一个报表
Dim tbl As
Table =
Tables("员工")
For i as
Integer = tbl.TopRow
To tbl.BottomRow
Dim rw
As
Row = tbl.Rows(i)
Dim rt
As New prt.RenderTable()
'定义一个表格对象
Dim
rx As New
prt.RenderText '定义一个文本对象
Dim
ra As New
prt.RenderArea '定义一个容器
ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never
'禁止容器因为分页而被垂直分割
'加入标题
rx.text = "员工资料卡"
rx.Style.FontBold =
True '字体加粗
rx.Style.FontSize = 16
'大体大小为16磅
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center
'水平居中排列
rx.Style.Spacing.Bottom =
3
'和下面的对象(表格)距离3毫米
ra.Children.Add(rx)
'加入到容器中
'指定行数、列数、列宽、行高
rt.Rows.Count = 7
'设置总行数
rt.Cols.Count = 5
'设置总列数
rt.Height = 75
'设置表格的高度
rt.Rows(6).Height
= 30
'设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
rt.Cols(0).Width
= 26
'设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
rt.Cols(1).Width
= 35
rt.Cols(2).Width
= 26
rt.Cols(3).Width
= 40
'设置合并单元格
rt.Cells(0,4).SpanRows
= 6
'第1行第5个单元格向下合并6行(用于显示照片)
rt.Cells(4,1).SpanCols
= 3
'第5行第2个单元格向右合并3列(用于显示地址)
rt.Cells(6,0).SpanCols
= 5
'第7行第1个单元格向右合并5列(用于显示备注)
'设置表格样式
rt.CellStyle.Spacing.All =
1
'单元格内容缩进1毫米
rt.Style.Spacing.Bottom =
5
'和下一个资料卡的距离是5毫米
rt.Style.GridLines.All = New prt.Linedef
'设置网格线
rt.Style.TextAlignVert = prt.AlignVertEnum.Center
'内容垂直居中
rt.Rows(6).Style.TextAlignVert
= prt.AlignVertEnum.Top '唯独第7行是备注,内容靠上对齐
'下面很简单,指定每一个单元格的内容
rt.Cells(0,0).Text=
"姓名"
rt.Cells(0,1).Text
= rw("姓名")
rt.Cells(0,2).Text=
"出生日期"
rt.Cells(0,3).Text
= rw("出生日期")
rt.Cells(1,0).Text=
"部门"
rt.Cells(1,1).Text
= rw("部门")
rt.Cells(1,2).Text=
"雇佣日期"
rt.Cells(1,3).Text
= rw("雇佣日期")
rt.Cells(2,0).Text=
"性别"
rt.Cells(2,1).Text
= rw("性别")
rt.Cells(2,2).Text=
"职务"
rt.Cells(2,3).Text
= rw("职务")
rt.Cells(3,0).Text=
"城市"
rt.Cells(3,1).Text
= rw("城市")
rt.Cells(3,2).Text=
"邮政编码"
rt.Cells(3,3).Text
= rw("邮政编码")
rt.Cells(4,0).Text=
"地址"
rt.Cells(4,1).Text
= rw("地址")
rt.Cells(5,0).Text=
"家庭电话"
rt.Cells(5,1).Text
= rw("家庭电话")
rt.Cells(5,2).Text=
"办公电话"
rt.Cells(5,3).Text
= rw("办公电话")
rt.Cells(6,0).Text
= rw("备注")
rt.Cells(0,4).Image
= GetImage(rw("照片"))
ra.Children.Add(rt)
'加入到容器中
Doc.Body.ChildRen.Add(ra)
'将容器加入到报表中
Next
Doc.Preview() '预览报表
执行结果:
本页地址:http://www.foxtable.com/webhelp/topics/1239.htm