Foxtable(狐表)用户栏目专家坐堂 → [求助]请教专业报表设计 页眉页脚分页循环打印


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

主题:[求助]请教专业报表设计 页眉页脚分页循环打印

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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
[求助]请教专业报表设计 页眉页脚分页循环打印  发帖心情 Post By:2021/4/21 17:28:00 [显示全部帖子]

图片点击可在新窗口打开查看




图片点击可在新窗口打开查看


Dim doc As New PrintDoc  '定义一个报表
Dim rt As prt.RenderTable'定义一个表格对象

Dim tb As Table = Tables("主表.明细表")
Dim tbl As Table = Tables("主表")

doc.PageSetting.Width = 241  '纸张宽度为200毫米
doc.PageSetting.Height = 93 '纸张高度为170毫米
doc.AutoRotate = False  '如果纸张的宽度超过高度,要加上这行代码

doc.PageSetting.TopMargin= 1
doc.PageSetting.BottomMargin =5
doc.PageSetting.LeftMargin= 5
doc.PageSetting.RightMargin =5

Dim rt1 As New prt.RenderText 
rt1 = New prt.RenderText '设置文本对象的内容
rt1.Text = "页数[PageNo]/[PageCount]" '设置文本内容
rt1.Style.TextAlignHorz = prt.AlignHorzEnum.Right '靠右对齐

rt1.Style.Padding.Bottom = 0.5 '底端内容缩进0.5毫米
rt1.Style.FontSize = 16 '字体大小为8磅
Doc.PageHeader = rt1 '作为页眉使用

'设置主标题
rt = New prt.RenderTable
rt.BreakBefore = prt.BreakEnum.Page '另起一页再打印
rt.Style.GridLines.All = New prt.Linedef  '设置网格线
rt.CellStyle.Spacing.All = 1 '内容距离网格线1毫米
rt.Cells(0,0).text = "xxx采购入库单"

rt.Cells(0,0).SpanCols = 10 '合并第一行全部单元格,用于显示主标题
rt.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体


'设置副标题
rt.Cells(1,0).text ="单号:" & tbl.Current("单号")  '通过左边空格数量来调整副标题位置
rt.Cells(1,0).Spancols = 3 '合并第二行全部单元格,用于显示副标题
rt.Cells(1,0).Style.Borders.Right = New prt.LineDef("0mm", Color.white)
rt.Cells(1,3).text ="制单人:" & tbl.current("姓名")  '通过左边空格数量来调整副标题位置
rt.Cells(1,3).Spancols = 3 '合并第二行全部单元格,用于显示副标题
rt.Cells(1,3).Style.Borders.Right = New prt.LineDef("0mm", Color.white)
rt.Cells(1,6).text ="日期:" & tbl.current("日期")  '通过左边空格数量来调整副标题位置
rt.Cells(1,6).Spancols = 4 '合并第二行全部单元格,用于显示副标题
rt.Cells(1,6).Style.Borders.Right = New prt.LineDef("0mm", Color.white)
rt.Cells(2,0).text = "供应商:[" & tbl.Current("供应商") & "]" & tbl.Current("供应商名称")  '通过左边空格数量来调整副标题位置
rt.Cells(2,0).Spancols = 3 '合并第二行全部单元格,用于显示副标题
rt.Cells(2,0).Style.Borders.Right = New prt.LineDef("0mm", Color.white)
rt.Cells(2,3).text ="仓位:" & tbl.current("门店")  '通过左边空格数量来调整副标题位置
rt.Cells(2,3).Spancols = 3 '合并第二行全部单元格,用于显示副标题
rt.Cells(2,3).Style.Borders.Right = New prt.LineDef("0mm", Color.white)
rt.Cells(2,6).text ="自营定货单号:" & tbl.current("验收")  '通过左边空格数量来调整副标题位置
rt.Cells(2,6).Spancols = 4 '合并第二行全部单元格,用于显示副标题
rt.Cells(2,6).Style.Borders.Right = New prt.LineDef("0mm", Color.white)
rt.Cells(3,0).text = "备注:" '通过左边空格数量来调整副标题位置
rt.Cells(3,0).Spancols = 7
rt.Cells(3,0).Style.Borders.Right = New prt.LineDef("0mm", Color.white)

rt.Cells(3,7).Spancols = 3
rt.Cells(3,7).Style.Borders.Right = New prt.LineDef("0mm", Color.white)
rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
rt.Rows(1).Style.Borders.All = New prt.LineDef("0mm", Color.white)'去掉第二行的网格线
rt.Rows(2).Style.Borders.All = New prt.LineDef("0mm", Color.white)'去掉第二行的网格线
rt.Rows(3).Style.Borders.All = New prt.LineDef("0mm", Color.white)'去掉第二行的网格线
rt.Rows(3).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
rt.Rows(3).Height = 8  '设置第二行的高度,拉开和表格主体的距离.
rt.RowGroups(0,1).Style.TextAlignVert = prt.AlignVertEnum.Center '第一行内容垂直居中
rt.RowGroups(0,5).Header = prt.TableHeaderEnum.All '将第一行作为表头.
rt.RowGroups(5,1).DataBinding.DataSource = BindTables("主表.明细表") '将第二行绑定到订单表


Dim ColNames As String() = New String(){"行号","商品代码","条码","商品名称", "含量","单位", "进价","数量","件数","金额"}
For c As Integer = 0 To Colnames.Length -1
    rt.Cells(4,c).Text = ColNames(c)
    rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth
    rt.Cells(5, c).Text = "[Fields!" & ColNames(c) & ".Value]" '设置绑定表达式
Next

rt.cells(rt.Rows.count-0,0).text= "金额合计:" 

rt.cells(rt.Rows.count-1,7).text= "总数" 'tbl.Current("数量")
rt.cells(rt.Rows.count-1,8).text= "总件数" 'tbl.Current("件数")
rt.cells(rt.Rows.count-1,9).text= tbl.Current("金额")


rt.cells(rt.Rows.count-0,1).text= "金额合计:" &  CUMoney(tbl.Current("金额")) & "元整"
rt.cells(rt.Rows.count-0,1).SpanCols= 7

rt.cells(rt.Rows.count-0,1).Style.TextAlignHorz = prt.AlignHorzEnum.Left

doc.Body.Children.Add(rt)
Doc.Preview

这个只能打印选中的一条数据,想设置为选多少打多少,换页后不打印表头和副标题,但需要显示页号固定在表格右上角,最后一行显示明细汇总的数量,件数,合计金额,页尾显示大写金额 不带边框,最后页脚 加上 经理: 验货: 制单人: 等留空签字 ,做了好久做不了.


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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/21 18:03:00 [显示全部帖子]


可是第二页不显示列名了,还有怎么不让他自动换行,就是固定行高呢? rt.cells(rt.Rows.count-1,7).text= "总数" 'tbl.Current("数量") 我怎么sum明细表("数量")呢?

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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/22 10:38:00 [显示全部帖子]

rt.Cells(2,0).text = "供应商: [ " & tbl.Current("供应商") & "] " & tbl.Current("供应商名称")  ' 怎样才能 输出 一对  [ ]  方括号

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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/22 11:42:00 [显示全部帖子]

rt.Cells(2,0).text = "供应商: [ " & tbl.Current("供应商") & "] " & tbl.Current("供应商名称")  '

加一个可以,加一对就都不显示了



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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/22 13:09:00 [显示全部帖子]

  不是 rt.Cells(2,0).text = "供应商: { " & tbl.Current("供应商") & "}" & tbl.Current("供应商名称")  没有问题,
rt.Cells(2,0).text = "供应商: " & tbl.Current("供应商") & "]" & tbl.Current("供应商名称")  '会有一个中括号   ,
是不是报表里面成对的[] 是默认为是 列名  就把[] 给去掉了.

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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/22 14:49:00 [显示全部帖子]

Dim rt1 As New prt.RenderText 
rt1 = New prt.RenderText '设置文本对象的内容
rt1.Text = "页数[PageNo]/[PageCount]" '设置文本内容
rt1.Style.TextAlignHorz = prt.AlignHorzEnum.Right '靠右对齐

rt1.Style.Padding.Bottom = 0.5 '底端内容缩进0.5毫米
rt1.Style.FontSize = 16 '字体大小为8磅
Doc.PageHeader = rt1 '作为页眉使用

我想把页眉去掉把  rt1 加入表格需要怎么处理?

rt.Cells(3,8).text =rt1 
rt.Cells(3,8).Spancols = 2


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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/22 15:25:00 [显示全部帖子]

这个报表代码拼凑了很多天了,一直做不好,大师你不能看一下代码按第一张图优化一下.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报表.table


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


加好友 发短信
等级:幼狐 帖子:114 积分:1849 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/22 16:07:00 [显示全部帖子]

合计左右两边的边框去不掉,还有就是不要页眉将页码放到表格上面.

 回到顶部