以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]专业报表 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132341) |
||||||||
-- 作者:老鼠 -- 发布时间:2019/3/20 10:49:00 -- [求助]专业报表
这是word报的格式,如何将其转成专业报表的代码呢?需要转成专业报表的原因是需要满足:1、当[列席人员]、[上级领导]、[主讲人]没有数据时不打印该列数据,也就是报表转出就没有这一行。2、当[记录人]不同时,报表的字体与大小发生对应变化。 以下是我已有内容。请帮忙!
|
||||||||
-- 作者:有点甜 -- 发布时间:2019/3/20 11:09:00 -- Dim doc As New PrintDoc \'定义一个报表 Dim t As Table = Tables("会议纪要") For i As Integer = t.TopPosition To t.BottomPosition Dim r As Row = t.Rows(i) Dim ra As New prt.RenderArea Dim rt As prt.RenderText ra.Style.Spacing.All = 1 ra.Style.Borders.All = New prt.Linedef(0.3, Color.Red) \'设置边框 ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割 ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割 Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中 rt = New prt.RenderText rt.Text = "中共涟源市杨市镇中心卫生院支部委员会" rt.X = 2 rt.Y = 2 ra.Children.Add(rt) \'添加到容器中 rt = New prt.RenderText rt.Text = "与会党员:" rt.X = 2 rt.Y = "Prev.Bottom + 2" \'垂直坐标位于迁移对象之下的2毫米 ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("与会党员") rt.X = 30 rt.Y = "Prev.Top" \'垂直坐标和前一对象相同 ra.Children.Add(rt) If r("列席人员") <> Nothing Then rt = New prt.RenderText rt.Text = "列席人员:" rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("列席人员") rt.X = 30 rt.Y = "Prev.Top" ra.Children.Add(rt) End If ra.BreakBefore = prt.BreakEnum.Page Next Doc.Preview() \'预览报表 |
||||||||
-- 作者:老鼠 -- 发布时间:2019/3/20 22:20:00 -- 首先感谢老师的指点,以下是我自己在您给出的代码上加入的内容,也不知道是否正确?还请老师指点。 Dim doc As New PrintDoc \'定义一个报表 Dim t As Table = Tables("会议纪要") \'定义一个数据表 For i As Integer = t.TopPosition To t.BottomPosition Dim r As Row = t.Rows(i) Dim ra As New prt.RenderArea \'定义一个容器 Dim rt As prt.RenderText \'定义一个文本对象 ra.Style.Spacing.All = 1 \'设置各个方面的间隔 ra.Style.Borders.All = New prt.Linedef(0.3, Color.Red) \'设置边框 ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割 ra.SplitVertBehavior = prt.SplitBehaviorEnum.SplitIfNeeded \'允许垂直分割 Doc.Body.ChildRen.Add(ra) \'将文本对象(容器)加入到报表中 rt = New prt.RenderText \'创建文本对象 rt.Text = "中共涟源市杨市镇中心卫生院支部委员会" \'设置文本对象的内容 rt.X = 40 rt.Y = 2 ra.Children.Add(rt) \'添加到容器中 rt = New prt.RenderText rt.Text = "时 间:" rt.X = 2 rt.Y = "Prev.Bottom + 2" \'垂直坐标位于迁移对象之下的2毫米 ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("时间") rt.X = 20 rt.Y = "Prev.Top" \'垂直坐标和前一对象相同 ra.Children.Add(rt) rt = New prt.RenderText rt.Text = "地 点:" rt.X = 2 rt.Y = "Prev.Bottom + 2" \'垂直坐标位于迁移对象之下的2毫米 ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("地点") rt.X = 20 rt.Y = "Prev.Top" \'垂直坐标和前一对象相同 ra.Children.Add(rt) rt = New prt.RenderText rt.Text = "与会党员:" rt.X = 2 rt.Y = "Prev.Bottom + 2" \'垂直坐标位于迁移对象之下的2毫米 ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("与会党员") rt.X = 20 rt.Y = "Prev.Top" \'垂直坐标和前一对象相同 ra.Children.Add(rt) If r("列席人员") <> Nothing Then rt = New prt.RenderText rt.Text = "列席人员:" rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("列席人员") rt.X = 20 rt.Y = "Prev.Top" ra.Children.Add(rt) End If If r("上级领导") <> Nothing Then rt = New prt.RenderText rt.Text = "上级领导:" rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("上级领导") rt.X = 20 rt.Y = "Prev.Top" ra.Children.Add(rt) End If If r("会议议题") <> Nothing Then rt = New prt.RenderText rt.Text = "会议议题:" rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("会议议题") rt.X = 20 rt.Y = "Prev.Top" ra.Children.Add(rt) End If If r("主持人") <> Nothing Then rt = New prt.RenderText rt.Text = "主 持 人:" rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("主持人") rt.X = 20 rt.Y = "Prev.Top" ra.Children.Add(rt) End If If r("主讲人") <> Nothing Then rt = New prt.RenderText rt.Text = "主 讲 人:" rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("主讲人") rt.X = 20 rt.Y = "Prev.Top" ra.Children.Add(rt) End If If r("会议内容") <> Nothing Then rt = New prt.RenderText rt.Text = "会议内容:" rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) rt = New prt.RenderText rt.Text = r("会议内容") rt.X = 2 rt.Y = "Prev.Bottom + 2" ra.Children.Add(rt) End If ra.BreakBefore = prt.BreakEnum.Page Next Doc.Preview() \'预览报表 可是执行后出现几个问题: 1、容器中的内容显示不完整,或者说是不能自动换行; 2、当[记录人]不同时,报表的字体与大小发生对应变化,不会实现。 [此贴子已经被作者于2019/3/20 22:31:21编辑过]
|
||||||||
-- 作者:有点甜 -- 发布时间:2019/3/20 22:54:00 -- 1、
2、参考
http://www.foxtable.com/webhelp/scr/1179.htm |
||||||||
-- 作者:老鼠 -- 发布时间:2019/3/21 14:25:00 -- 请问这个字体设置是不是不能使用安装字体呢? rt.Style.Font = New Font("陈静的字完整版", 22, Fontstyle.Regular) \'设置字体 这是我按照示范加入的代码。
|
||||||||
-- 作者:有点甜 -- 发布时间:2019/3/21 14:30:00 -- 你要先安装字体到系统,才能调用的。
https://jingyan.baidu.com/article/a501d80cd1a3f9ec630f5eb4.html
|
||||||||
-- 作者:有点甜 -- 发布时间:2019/3/21 14:34:00 -- 或者试试
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77110&authorid=0&page=0&star=1
|
||||||||
-- 作者:老鼠 -- 发布时间:2019/3/21 14:46:00 -- 字体是安装完好 的。 |
||||||||
-- 作者:有点甜 -- 发布时间:2019/3/21 15:07:00 -- 用这个对话框能否弹出和选择字体?
Dim fd As New Windows.Forms.FontDialog 如果不能,试试 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77110&authorid=0&page=0&star=1
|