以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]请教专业报表设计 页眉页脚分页循环打印 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=163041) |
|
-- 作者:lds -- 发布时间: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 这个只能打印选中的一条数据,想设置为选多少打多少,换页后不打印表头和副标题,但需要显示页号固定在表格右上角,最后一行显示明细汇总的数量,件数,合计金额,页尾显示大写金额 不带边框,最后页脚 加上 经理: 验货: 制单人: 等留空签字 ,做了好久做不了. |
|
-- 作者:有点蓝 -- 发布时间:2021/4/21 17:38:00 -- 只显示一次标题,去掉这句:rt.RowGroups(0,5).Header = prt.TableHeaderEnum.All \'将第一行作为表头. 把最后一会的表格边框设置为白色:http://www.foxtable.com/webhelp/topics/1200.htm 或者最后一行的内容不要放到表格里,直接使用RenderText添加内容
|
|
-- 作者:lds -- 发布时间:2021/4/21 18:03:00 -- 可是第二页不显示列名了,还有怎么不让他自动换行,就是固定行高呢? rt.cells(rt.Rows.count-1,7).text= "总数" \'tbl.Current("数量") 我怎么sum明细表("数量")呢?
|
|
-- 作者:有点蓝 -- 发布时间:2021/4/22 8:23:00 -- 1、 rt.RowGroups(0,5).Header = prt.TableHeaderEnum.All 改为 rt.RowGroups(4,1).Header = prt.TableHeaderEnum.All |
|
-- 作者:lds -- 发布时间:2021/4/22 10:38:00 -- rt.Cells(2,0).text = "供应商: [ " & tbl.Current("供应商") & "] " & tbl.Current("供应商名称") \' 怎样才能 输出 一对 [ ] 方括号 |
|
-- 作者:有点蓝 -- 发布时间:2021/4/22 10:49:00 -- 上面的代码就是 |
|
-- 作者:lds -- 发布时间:2021/4/22 11:42:00 --
|
|
-- 作者:有点蓝 -- 发布时间:2021/4/22 12:22:00 -- 是不是内容太多超出了单元格显示大小? |
|
-- 作者:lds -- 发布时间:2021/4/22 13:09:00 -- 不是 rt.Cells(2,0).text = "供应商: { " & tbl.Current("供应商") & "}" & tbl.Current("供应商名称") 没有问题, rt.Cells(2,0).text = "供应商: " & tbl.Current("供应商") & "]" & tbl.Current("供应商名称") \'会有一个中括号 , 是不是报表里面成对的[] 是默认为是 列名 就把[] 给去掉了.
|
|
-- 作者:有点蓝 -- 发布时间:2021/4/22 14:00:00 -- 是有这种问题,我反馈一下 |