以文本方式查看主题

-  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
--  [求助]专业报表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:会议纪要.zip

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


--  作者:有点甜
--  发布时间: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、

 

    
    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


--  作者:老鼠
--  发布时间:2019/3/21 14:25:00
--  
请问这个字体设置是不是不能使用安装字体呢?

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

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

--  作者:有点甜
--  发布时间: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
--  
字体是安装完好 的。

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


--  作者:有点甜
--  发布时间: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