Foxtable(狐表)用户栏目专家坐堂 → [求助]专业报表


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

主题:[求助]专业报表

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
[求助]专业报表  发帖心情 Post By:2019/3/20 10:49:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:会议纪要.zip

这是word报的格式,如何将其转成专业报表的代码呢?需要转成专业报表的原因是需要满足:1、当[列席人员]、[上级领导]、[主讲人]没有数据时不打印该列数据,也就是报表转出就没有这一行。2、当[记录人]不同时,报表的字体与大小发生对应变化。
以下是我已有内容。请帮忙!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:会议记录本.table


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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() '预览报表

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By: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编辑过]

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


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

1、

 

    
    rt = New prt.RenderText
    rt.Text = r("与会党员")
    rt.X = 20
    rt.Y = "Prev.Top" '垂直坐标和前一对象相同
    rt.width = "parent.width-20"
    ra.Children.Add(rt)
   

2、参考

 

http://www.foxtable.com/webhelp/scr/1179.htm


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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By:2019/3/21 14:25:00 [只看该作者]

请问这个字体设置是不是不能使用安装字体呢?

图片点击可在新窗口打开查看此主题相关图片如下:捕获01.png
图片点击可在新窗口打开查看
这是报错提示。
  rt.Style.Font = New Font("陈静的字完整版",  22, Fontstyle.Regular)  '设置字体
这是我按照示范加入的代码。

图片点击可在新窗口打开查看此主题相关图片如下:捕获02.png
图片点击可在新窗口打开查看
这是我安装的字体文件。

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


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

你要先安装字体到系统,才能调用的。

 

https://jingyan.baidu.com/article/a501d80cd1a3f9ec630f5eb4.html

 


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


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


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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By:2019/3/21 14:46:00 [只看该作者]

字体是安装完好 的。

图片点击可在新窗口打开查看此主题相关图片如下:捕获03.png
图片点击可在新窗口打开查看


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


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

用这个对话框能否弹出和选择字体?

 

Dim fd As New Windows.Forms.FontDialog
If fd.ShowDialog = DialogResult.OK Then
    msgbox(fd.font.name)
End If

如果不能,试试 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77110&authorid=0&page=0&star=1

 


 回到顶部