以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  同一张纸上打印两张表问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=86862)

--  作者:nxqtxwz
--  发布时间:2016/6/28 8:14:00
--  同一张纸上打印两张表问题

想在同一张纸上打印两张表,类似于单据的第一、第二联,请问代码怎么写呢。我的第一联代码如下,第二联怎么写呢:

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderTable() \'定义一个表格对象
Dim rx As New prt.RenderText \'定义一个文本对象
Dim CurRow As Row = Tables("出差记录").Current
\'加入标题
rx.text = "青铜峡市铝业学校出差通知单"
rx.Style.FontBold = True \'字体加粗
rx.Style.FontSize = 16 \'大体大小为16磅
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中排列
rx.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米
\'doc.Body.Children.Add(rx) \'加入到报表中
\'指定行数?列数?列宽?行高
rt.Rows.Count = 7 \'设置总行数
rt.Cols.Count = 16 \'设置总列数
rt.Height = 70 \'设置表格的高度为80毫米
rt.Cols(0).Width = 10 \'设置列的宽度,剩余的宽度被分配最后列
rt.Cols(1).Width = 10
rt.Cols(2).Width = 10
rt.Cols(3).Width = 10
rt.Cols(4).Width = 10
rt.Cols(5).Width = 10
rt.Cols(6).Width = 10
rt.Cols(7).Width = 10
rt.Cols(8).Width = 10
rt.Cols(9).Width = 10
rt.Cols(10).Width = 10
rt.Cols(11).Width = 10
rt.Cols(12).Width = 10
rt.Cols(13).Width = 10
rt.Cols(14).Width = 10
rt.Cols(15).Width = 10

\'设置合并单元格
rt.Cells(0,0).SpanCols =2     \'第1行第1个单元格向右合并2列
rt.Cells(0,2).SpanCols =2
rt.Cells(0,4).SpanCols =2
rt.Cells(0,6).SpanCols = 2
rt.Cells(0,8).SpanCols =2
rt.Cells(0,10).SpanCols =6

 


rt.Cells(1,0).SpanCols = 2      \'第二行
rt.Cells(1,2).SpanCols =14
rt.Cells(2,0).SpanCols = 2     \'第三行
rt.Cells(2,2).SpanCols = 8
rt.Cells(2,10).SpanCols = 2
rt.Cells(2,12).SpanCols =6

rt.Cells(3,0).SpanCols =2      \'第四行
rt.Cells(3,2).SpanCols =14

rt.Cells(4,0).SpanCols =2      \'第五行
rt.Cells(4,2).SpanCols =14

rt.Cells(4,0).SpanCols =2      \'第五行
rt.Cells(4,2).SpanCols =14

rt.Cells(5,0).SpanCols =2     \'第六行
rt.Cells(5,2).SpanCols =2
rt.Cells(5,4).SpanCols =2
rt.Cells(5,6).SpanCols =2     
rt.Cells(5,8).SpanCols =2
rt.Cells(5,10).SpanCols =2    
rt.Cells(5,12).SpanCols =2
rt.Cells(5,14).SpanCols =2


rt.Cells(6,0).SpanCols =2     \'第七行
rt.Cells(6,2).SpanCols =3
rt.Cells(6,5).SpanCols =2     
rt.Cells(6,7).SpanCols =3
rt.Cells(6,10).SpanCols =2    
rt.Cells(6,12).SpanCols =4


\'设置表格样式
rt.CellStyle.Spacing.All = 1 \'单元格内容缩进1毫米
rt.Style.GridLines.All = New prt.Linedef \'设置网格线
rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'内容垂直居中
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中

 

\'下面很简单,指定每一个单元格的内容
rt.Cells(0,0).Text= "编  号"
rt.Cells(0,2).Text = CurRow("编号")
rt.Cells(0,4).Text= "类  别"
rt.Cells(0,6).Text = CurRow("类别")
rt.Cells(0,8).Text= "时  限"
rt.Cells(0,10).Text = CurRow("时限")

rt.Cells(1,0).Text= "出 差 人"                   \'第二行
rt.Cells(1,2).Text = CurRow("出差人")

rt.Cells(2,0).Text= "地点"                     \'第三行
rt.Cells(2,2).Text = CurRow("地点")
rt.Cells(2,10).Text= "通知时间"
rt.Cells(2,12).Text = CurRow ("通知时间")

rt.Cells(3,0).Text= "依据"                     \'第四行
rt.Cells(3,2).Text = CurRow("依据")

rt.Cells(4,0).Text= "要求"                     \'第五行
rt.Cells(4,2).Text = CurRow("要求")

rt.Cells(5,0).Text= "天数"                     \'第六行
rt.Cells(5,2).Text = CurRow("天数")
rt.Cells(5,4).Text= "交通费"
rt.Cells(5,6).Text = CurRow("交通费")
rt.Cells(5,8).Text= "伙食费"
rt.Cells(5,10).Text = CurRow("伙食费")
rt.Cells(5,12).Text= "住宿费"
rt.Cells(5,14).Text = CurRow("住宿费")

rt.Cells(6,0).Text= "负责人"                   \'第七行
rt.Cells(6,5).Text ="主管领导"
rt.Cells(6,10).Text ="校长审批"
doc.Body.Children.Add(rt) \'将表格对象加入到报表中


--  作者:Hyphen
--  发布时间:2016/6/28 8:47:00
--  
再重复添加一个表格对象不就行了

......
doc.Body.Children.Add(rt) \'第一个表格
Dim rt2 As New prt.RenderTable()
\'rt2赋值代码
doc.Body.Children.Add(rt2) \'第二个表格


--  作者:nxqtxwz
--  发布时间:2016/6/28 9:36:00
--  
老师你好,谢谢你的帮助。两个表可以放在一张纸上了,但两个表之间的距离如何确定呢。我在第一个表的代码结尾加入rt.Style.Spacing.Bottom =20  ,第一张表的表格行自动变窄了。在第二个表的代码前面加上rt2.Style.Spacing.Bottom =20   后,第二个表的行变窄了,这个问题怎么解决呢。
--  作者:逛逛
--  发布时间:2016/6/28 9:37:00
--  
rt的代码
加上
Dim rtr As New prt.RenderTable() \'定义一个表格容器,存放两个对象
rtr.Rows.Count = 3 \'设置总行数,中间行用于调整间距
rtr.Cols.Count = 1 
rtr.Rows(1).Height = 20   \'自己调整间距
rtr.Cells(0,0).RenderObject = rt   \'加入第一张表
rtr.Cells(2,0).RenderObject = rt.Clone() \'加入第二张表(拷贝第一张)
doc.Body.Children.Add(rtr) \'将表格容器加入到报表中
doc.Preview()   \'预览

--  作者:大红袍
--  发布时间:2016/6/28 9:40:00
--  
以下是引用nxqtxwz在2016/6/28 9:36:00的发言:
老师你好,谢谢你的帮助。两个表可以放在一张纸上了,但两个表之间的距离如何确定呢。我在第一个表的代码结尾加入rt.Style.Spacing.Bottom =20  ,第一张表的表格行自动变窄了。在第二个表的代码前面加上rt2.Style.Spacing.Bottom =20   后,第二个表的行变窄了,这个问题怎么解决呢。

 

在两个表中加,插入一个RenderText,控制好它的高度,就行啊。


--  作者:nxqtxwz
--  发布时间:2016/6/28 9:47:00
--  

谢谢老师,问题解决了。