以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 专业报表如何消除中间表格与文本页脚间的空隙? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=51178)
|
-- 作者:scott518
-- 发布时间:2014/5/21 12:01:00
-- 专业报表如何消除中间表格与文本页脚间的空隙?
此主题相关图片如下:qq截图20140521114323.jpg

上图是中间用表格生成主体表,最后用文本生成页脚的情况 ,但明细表不多时中间出现了空格。代码如下:
。。。。
rt.Cells(rt.Rows.Count-1,6).Style.TextAlignHorz = prt.AlignHorzEnum.Right \'文本水平位置 \'-----------------------------------------------------------2 rt.Rows(rt.Rows.Count).Height = "auto" rt.Cells(rt.Rows.Count-1,0).Style.Font = New Font("宋体",12) \'设置字体 rt.Cells(rt.Rows.Count-1,0).SpanCols = 2 rt.Cells(rt.Rows.Count-1,0).Text = "备注:" & vbcrlf & "(特殊要件)" rt.Cells(rt.Rows.Count-1,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本水平位置 rt.Cells(rt.Rows.Count-1,2).SpanCols = 8 rt.Cells(rt.Rows.Count-1,2).Text = CurRow("备注") rt.Cells(rt.Rows.Count-1,2).Style.TextAlignHorz = prt.AlignHorzEnum.Left \'文本水平位置 \'----------------------------------------------------------4 doc.Body.Children.Add(rt) \'将表格对象加入到报表中 rx = New prt.RenderText \'定义一个文本对象 \'Dim s As String s = "二、供方应在确认的交期内供货,若逾期未交货,则按未交货金额的5%计算违约金.超过三天的,需方可以取消订单。" & vbcrlf s = s & "三、商品依需方所订立之检验标准进行验收,全部或部分不合格时,需方有权退货,由供方在限定期限内取回并及时补货,因退换货所发生的费用及其损失概由供方自行负担。" & vbcrlf s = s & "四、交货地点:需方仓库。" & vbcrlf s = s & "五、付款条件:月结 天。" & vbcrlf s = s & "六、订单变更时,必须以书面形式通知对方,并需经双方有权签章人员签章确认,否则无效。" & vbcrlf s = s & "七、供方在收到本单一个工作日内签收并回复需方,若未及时签回此单,则视默认处理.本单传真有效。" & vbcrlf s = s & "八、交货时,供方需附送货单,且所供货物需有包装标签,送货单及外箱标签必须正确标注品名、规格、数量及相对应的订单编号,以便迅速验收,若有未标识或标识不正确者,需方有权拒绝验收。" & vbcrlf s = s & "九、供方向买需方业务人员以及相关人员赠送礼物、行贿的,需方有权没收当月货款。" & vbcrlf s = s & "十、其他要求:" rx.Text = s rx.Style.LineSpacing = 120 \'设置双倍行距 \' rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中 rx.Style.Font = New Font("宋体", 12) \'设置字体 rx.Style.Spacing.Bottom = 8 \'和下一个对象的距离(毫米) ra.Children.Add(rx) \'将文本对象加入到容器ra中 doc.PageFooter = ra
。。。。。
如何消除中间的空格,谢谢!
|
-- 作者:Bin
-- 发布时间:2014/5/21 12:04:00
--
把 RX往上移
rx.Style.Spacing.Top=-20 看看
|
-- 作者:有点甜
-- 发布时间:2014/5/21 12:37:00
--
为什么要设置成页脚?直接加在后面不行?
具体问题请上传例子
|
-- 作者:scott518
-- 发布时间:2014/5/21 14:33:00
--
谢谢!因为用户要求每页都要显示那些文字 。这个问题基本解决,另外想问下:如下图
此主题相关图片如下:360截图20140521142541495.jpg

上面绿色框中的内容用RenderText并设置为页眉,然后再定义一个RenderTable() 来生成表体,此时用下面这句代码
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All \'指定表头行
想指定表体的标题每页也都显示,这句代码好象不起作用了,是不是指定了页眉这样设置就不起作用?
|
-- 作者:有点甜
-- 发布时间:2014/5/21 15:03:00
--
回复4楼,我测试可以的,如果你的不行就肯定是代码哪里写错了,再调试一下。
Dim doc As New PrintDoc \'定义一个报表
Dim rx As New prt.RenderTable rx.Cells(0,0).Text = Date.Today rx.Cells(0,1).Text = "抗震救灾专题" rx.Cells(0,2).Text = "第[PageNo]页,共[PageCount]页" rx.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left rx.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center rx.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right rx.Style.Borders.Bottom = New prt.LineDef \'设置底边框 rx.CellStyle.Spacing.Bottom = 0.5 \'底端内容缩进0.5毫米 rx.Style.FontSize = 8 \'字体大小为8磅 Doc.PageHeader = rx \'作为页眉使用
Dim rt As New prt.RenderTable() \'定义一个表格对象 doc.Body.Children.Add(rt) \'将表格对象加入到报表中 rt.Style.GridLines.All = New prt.Linedef \'设置网格线 rt.CellStyle.Spacing.All = 1 \'内容距离网格线1毫米 \'设置主标题 rt.Cells(0,0).text = "主标题内容" rt.Cells(0,0).SpanCols = 6 \'合并第一行全部单元格,用于显示主标题 rt.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'主标题居中 rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) \'设置主标题字体 rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) \'去掉第一行的网格线 \'设置副标题 rt.Cells(1,0).text = " 副标题内容" \'通过左边空格数量来调整副标题位置 rt.Cells(1,0).SpanCols = 6 \'合并地二行全部单元格,用于显示副标题 rt.Cells(1,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'副标题内容居中 rt.Rows(1).Style.Borders.All = New prt.LineDef("0mm", Color.white) \'去掉第二行的网格线 rt.Rows(1).Style.Borders.Bottom = New prt.Linedef \'恢复第二行底端的网格线 rt.Rows(1).Height = 8 \'设置第二行的高度,拉开和表格主体的距离. \'设置列标题 rt.cells(2,0).SpanCols = 3 \'合并第一行前三个单元格 rt.Cells(2,3).SpanCols = 3 \'合并第一行最后三个单元格 rt.cells(2,0).Text = "第一季度" \'设置第一行第一个单元格的内容 rt.Cells(2,3).Text = "第二季度" \'设置第一行第四个单元格的内容 rt.Cells(3,0).Text= "华东" rt.Cells(3,1).Text = "华南" rt.Cells(3,2).Text = "华北" rt.Cells(3,3).Text= "华东" rt.Cells(3,4).Text = "华南" rt.Cells(3,5).Text = "华北" rt.RowGroups(2,2).Style.BackColor = Color.LightGray \'第三第四行的颜色设为灰色 rt.RowGroups(2,2).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第三第四行的文本水平居中 rt.RowGroups(2,2).Style.TextAlignVert = prt.AlignVertEnum.Center \'第三第四行的文本垂直居中 rt.RowGroups(0,4).Header = prt.TableHeaderEnum.All \'前四行作为表头 \'给表格增加行测试效果 For i As Integer = 2 To 100 \'增加100行 rt.Cells(i + 2, 0).Text = i Next
doc.Preview() \'预览
|
-- 作者:zpx_2012
-- 发布时间:2014/5/21 15:09:00
--
怎么总回复错
[此贴子已经被作者于2014-5-21 15:09:20编辑过]
|
-- 作者:scott518
-- 发布时间:2014/5/21 16:27:00
--
谢谢!没有找到什么原因,后来把行数改为大于1的数字就可以,2,3,4,5等都可以。明明表上只有一行列标题,但用1就不行。反正可以就先这样用了。
rt.RowGroups(0,2).Header = prt.TableHeaderEnum.Page \'指定表头行
|
-- 作者:有点甜
-- 发布时间:2014/5/21 16:32:00
--
回复7楼,可能是你列标题就是写在了表格的第二行。第一行应该是空白吧。
|
-- 作者:scott518
-- 发布时间:2014/5/21 16:52:00
--
没有空白行,代码如下:
.......
rx.Style.Font = New Font("宋体", 13) \'设置字体 rx.Style.Spacing.Bottom = 2 \'和下一个对象的距离(毫米) ra.Children.Add(rx) \'将文本对象加入到容器ra中 \'----设置以上部份作为页眉-------------------------------------- doc.PageHeader = ra
ra = New prt.RenderArea \'定义一个容器 rt = New prt.RenderTable() \'定义一个表格对象 \'指定总列数及各列宽,未指定的平分剩余宽度 CW = dr("Bodycw") \'"" Cls = CW.split("|") rt.Cols.Count = Cls.Length + 1 \'设置总列数 For i As Integer = 0 To Cls.Length-1 rt.Cols(i).Width = Cls(i) Next \'设置表格总体样式-------------------------------------------0 rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本水平居中 rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'文本垂直居中 rt.CellStyle.Spacing.All = 1 \'单元格内容缩进1毫米 rt.Style.GridLines.All = New prt.Linedef(0.2,Color.Black) \'设置网格线 rt.Style.Font = New Font("宋体", 11) \'设置总体字体 \'rt.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止被垂直分割 rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded \'表格宽度超出页宽时,可以水平换页 \'设置明细表标题列--------------------------------- ---------1 rt.Rows(rt.Rows.Count).Height = 11 rt.Rows(rt.Rows.Count-1).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本水平居中 Dim nms As String() = {"序号","产品编码","品名","规格","采购数量","计量单位","单价","金额","交货日期","备注"} For c As Integer = 0 To nms.Length -1 rt.Cells(rt.Rows.Count-1,c).Text = nms(c) Next rt.RowGroups(0,2).Header = prt.TableHeaderEnum.All \'指定表头行
........
|
-- 作者:有点甜
-- 发布时间:2014/5/21 17:01:00
--
能用就好。代码有错,红色,绝对是1,而不是0
For c As Integer = 0 To nms.Length -1 rt.Cells(rt.Rows.Count-1,c).Text = nms(c) Next
|