Foxtable(狐表)用户栏目专家坐堂 → [求助]关于专业报表,列宽的求助


  共有4780人关注过本帖树形打印复制链接

主题:[求助]关于专业报表,列宽的求助

帅哥哟,离线,有人找我吗?
fb201011
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:173 积分:1767 威望:0 精华:0 注册:2011/12/22 17:15:00
[求助]关于专业报表,列宽的求助  发帖心情 Post By:2013/12/7 14:32:00 [只看该作者]

请教各位,关于专业报表中,如何固定列宽?我用了下面的代码出现程序中的问题。请各位帮忙解决!         

    '--------设置报表列宽   开始
        rt.Width = "Auto"
        rt.Cols(0).Width = 10  '设置列宽
        rt.Cols(1).Width = 15  '设置列宽
        rt.Cols(2).Width = 20  '设置列宽
        rt.Cols(3).Width = 25 '设置列宽
        rt.Cols(4).Width = 30 '设置列宽
        rt.Cols(5).Width = 36 '设置列宽
        rt.Cols(6).Width = 42 '设置列宽
        rt.Cols(7).Width = 20 '设置列宽
        rt.Cols(8).Width = 20 '设置列宽
        rt.Height = 40
        '----------设置报表列宽   结束

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:专业报表固定如何列宽并按固定分页.table


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/7 14:52:00 [只看该作者]

原因是你总宽度超过了表的宽度了

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:专业报表固定如何列宽并按固定分页.table



 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/12/7 15:13:00 [只看该作者]

1、有了 rt.Width = "Auto",当您指定的表宽不等于所有已经指定的列宽之和时,会自动拉伸各列;

2、您可以这样,指定列宽时,留出一个列不必指定宽度,假如这一列是“备注”列,已指定的所有列宽加上您想要得到的备注列的最小宽度之和不能大于报表总宽度,这样,其他列的列宽就固定了,备注列的宽度就是报表宽度减去已指定的所有列宽度!


 回到顶部
帅哥哟,离线,有人找我吗?
fb201011
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:173 积分:1767 威望:0 精华:0 注册:2011/12/22 17:15:00
  发帖心情 Post By:2013/12/7 15:38:00 [只看该作者]

感谢两位老师的指点。继续请教两位老师。

1、假如只固定一列。其他列不控制。某列输入的字符长度有长有短,而且表格位置也会不固定,那么打印出来的可能就会分行。有的行宽,有的行窄,不像一个成熟报表的样子。能否限制每行固定高度?我在里边一加限制行的高度的,第二、三页就会有多余的行。

2、总宽度的怎么计算的?不是每个列的宽度加起来的和吗?求指点

 

 

[此贴子已经被作者于2013-12-7 15:38:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fb201011
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:173 积分:1767 威望:0 精华:0 注册:2011/12/22 17:15:00
  发帖心情 Post By:2013/12/7 19:13:00 [只看该作者]

请老师帮忙


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/7 19:44:00 [只看该作者]

 代码我测试正常哦

Dim doc As New Printdoc
Dim rx As prt.RenderText
Dim rt As prt.RenderTable
Dim Rows As List(Of DataRow)
Dim ys As Integer =5   '页数
Dim tbl As Table = Tables("订单")

doc.PageSetting.Width = 240 '纸张宽度为100毫米
doc.PageSetting.Height = 100 '纸张高度为120毫米
'rt.Width = 120 '设置表格的宽度为120毫米
'rt.Height = 100 '设置表格的高度为100毫米
Doc.PageSetting.LeftMargin = 8 '设置左边距
Doc.PageSetting.RightMargin = 8 '设置右边距
Doc.PageSetting.TopMargin = 10 '设置上边距
Doc.PageSetting.BottomMargin = 8 '设置下边距
For i As Integer = tbl.TopRow To tbl.BottomRow
    Rows = Tables("订单").Rows(i).DataRow.GetChildRows("订单明细")
    For j As Integer = 0 To math.Ceiling(Rows.Count /ys) - 1  '每页四行
        rx = New prt.RenderText
        rx.BreakBefore = prt.BreakEnum.Page '另起一页再打印
        rx.Style.FontSize = 14
        rx.Style.FontBold = True
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中
        rx.Style.Spacing.Bottom = 5
        ' rx.Text = "订单号: " & Tables("订单").Rows(i)("订单号")
        rx.Text = "产品发运审批单"
        doc.Body.Children.Add(rx)
        rx = New prt.RenderText
        rx.Style.FontSize = 12
        ' rx.Style.FontBold = True
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.left '文本内容水平居左
        rx.Style.Spacing.Bottom = 1
        ' rx.Text = "订单号: " & Tables("订单").Rows(i)("订单号")
        rx.Text = "日期                                                                  产品发运审号:" &Tables("订单").Rows(i)("订单号")
        doc.Body.Children.Add(rx)
        
        rt = New prt.RenderTable
        rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
        rt.Style.TextAlignVert = prt.AlignVertEnum.Center
        rt.Style.Borders.Bottom = New prt.LineDef(0.3,Color.LightGray)
        rt.Style.GridLines.All = New prt.LineDef  '将网格线类型设为默认类型
        rt.CellStyle.Spacing.All = 1
      '  rt.Cols.Count = 4
       rt.Cells(0,0).Text = "商品名称"
        rt.Cells(0,1).Text = "规格型号"
        rt.Cells(0,2).Text = "计量单位"
        rt.Cells(0,3).Text = "数量"
        rt.Cells(0,4).Text = "单价"
        rt.Cells(0,5).Text = "金额"
        rt.Cells(0,6).Text = "等级"
        rt.Cells(0,7).Text = "电晕"
        rt.Cells(0,8).Text = "备注"        
             
        ' rt.rows(0).Style.Borders.Top = New prt.LineDef(0.1,Color.LightGray)
        ' rt.rows(0).Style.Borders.Bottom = New prt.LineDef(0.1,Color.LightGray)
        
        For r As Integer = j*ys To (j+1)*ys-1
            If r < Rows.count
                rt.Cells(r-j*ys,0).Text = rows(r)("商品名称")
                rt.Cells(r-j*ys ,1).Text = rows(r)("规格型号")
                rt.Cells(r-j*ys ,2).Text = rows(r)("计量单位")
                rt.Cells(r-j*ys ,3).Text = rows(r)("数量")
                rt.Cells(r-j*ys ,4).Text = rows(r)("单价")
                rt.Cells(r-j*ys ,5).Text = rows(r)("金额")
                rt.Cells(r-j*ys ,6).Text = rows(r)("等级")
                rt.Cells(r-j*ys ,7).Text = rows(r)("电晕")
                rt.Cells(r-j*ys ,8).Text = rows(r)("备注")               
            End If
        Next
              '--------设置报表列宽   开始
        rt.Width = "Auto"
        rt.Cols(0).Width = 10  '设置列宽
        rt.Cols(1).Width = 15  '设置列宽
        rt.Cols(2).Width = 20  '设置列宽
        rt.Cols(3).Width = 25 '设置列宽
        rt.Cols(4).Width = 30 '设置列宽
        rt.Cols(5).Width = 36 '设置列宽
        rt.Cols(6).Width = 42 '设置列宽
        rt.Cols(7).Width = 20 '设置列宽
        rt.Cols(8).Width = 20 '设置列宽
               rt.Height = 40
        '----------设置报表列宽   结束

        doc.Body.Children.Add(rt)
        rx = New prt.RenderText
        rx.Style.FontBold = True
        rx.Style.Spacing.Top = 3
        rx.Text = "制单人:            第" & j+1 & "页,共" & math.Ceiling(Rows.Count /ys) & "页" '我改动
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.left
        doc.Body.Children.Add(rx)
    Next
Next
doc.Preview
'MessageBox.show("循环次数: " & i,"提示",MessageBoxButtons.OK)

' rx = New prt.RenderText() '再次定义一个文本对象
'    rx.Text = "制单人:         " & "第" & rr & "页,共" & rr & "页"
'    doc.Body.Children.Add(rx) '将文本对象加入到表格中

 回到顶部
帅哥哟,离线,有人找我吗?
fb201011
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:173 积分:1767 威望:0 精华:0 注册:2011/12/22 17:15:00
  发帖心情 Post By:2013/12/7 20:13:00 [只看该作者]

老师你点第二个按钮,预览第一页正常,但第二页、第三页就不正常了,多出几行空白行,行距也小了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/7 20:20:00 [只看该作者]

 参考6楼的代码,修改一下。

 回到顶部
帅哥哟,离线,有人找我吗?
fb201011
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:173 积分:1767 威望:0 精华:0 注册:2011/12/22 17:15:00
  发帖心情 Post By:2013/12/9 10:32:00 [只看该作者]

谢谢老师!正确,问题已解决

 回到顶部