Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
例程中的专业报表有个连续打印员工资料表的例子,请教如何在两个资料表中间设置一条分隔线(也可以叫做剪裁线)
样式是这样的:
此处为第一个资料表
----------------剪裁线----------------
此处是第二个资料表
鼓捣了半天也没出结果,请指教一下
这样吗:
Dim doc As New PrintDoc
Dim rt As New prt.RenderText
rt.Text = "----------------------剪裁线------------------------"
doc.Body.Children.Add(rt)
doc.Preview()
哈哈,气死老夫了,我还在想尽办法划线呢。
哈哈,气死老夫了,我还在想尽办法划线呢。
哈,你想歪了。
试了一下,用画线的方法也可以解决。
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.Top = 3
rx.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
ra.Children.Add(rx) '加入到容器中
'指定行数?列数?列宽?行高
rt.Rows.Count = 7 '设置总行数
rt.Cols.Count = 5 '设置总列数
rt.Height = 80 '设置表格的高度
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 = 9 '和下一个资料卡的距离是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) '加入到容器中
'加入分隔线
Dim Line As New prt.LineDef(0.5, Color.Black,DashStyle.Dot)
Dim ln As New prt.RenderLine(0,90, 200,90, Line)
ra.Children.Add(ln) '将线条加入到容器中
Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
Next
Doc.Preview() '预览报表
二楼的方法结果是剪裁线在每个资料表的顶端,包括第一个资料表,这样好像位置不对啊!
四楼的方法结果是需要定义资料表和分隔线的间隔宽度,而且中间无 “剪裁线”字样
二楼的方法结果是剪裁线在每个资料表的顶端,包括第一个资料表,这样好像位置不对啊!
二楼的方法加上位置应该可以的
老大的代码好像有问题,这样是可以的
'加入分隔线
Dim ry As New prt.RenderText
ry.Text = "---------------------------------------------------------------------剪裁线-----------------------------------------------------------------------------"
ry.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
ry.Style.Spacing.top = 2 '和上面的对象(表格)距离5毫米
ry.Style.Spacing.Bottom = 5 '和下面的对象(表格)距离5毫米
ra.Children.Add(rt) '加入到容器中
ra.Children.Add(ry) '加入到容器中
Doc.Body.ChildRen.Add(ra) '将容器加入到报表中