Foxtable(狐表)用户栏目专家坐堂 → 请教:专业报表卡死。是否为BUG?


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

主题:请教:专业报表卡死。是否为BUG?

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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
请教:专业报表卡死。是否为BUG?  发帖心情 Post By:2014/10/20 14:40:00 [只看该作者]

有如下代码,现在想表头每页打印,但遇到下面代码冲突(标有红色代码冲突)。是否有解决方案?
谢谢!

Dim Doc As new PrintDoc
Dim rt As new prt.RenderTable
rt.Style.GridLines.All = New Prt.LineDef(0.5, Color.Black)
Dim tra As new prt.RenderArea  '容器

tra = rt.Cells(0,0).Area '引用单元格的容器

tra.Stacking = prt.StackingRulesEnum.BlockTopToBottom  '排列方式改为从上到下
tra.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded   'Never  '需要水平分割

Dim title As new prt.RenderText
title.Text = "公司名称"  '设置文本对象的内容
title.Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
title.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中
title.Style.Spacing.Bottom = 1
tra.Children.Add(title)

Dim title1 As new prt.RenderText
title1.Text = "CompanyName"  '设置文本对象的内容
title1.Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
title1.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中
title1.Style.Spacing.Bottom = 3
tra.Children.Add(title1)

Dim title2 As new prt.RenderText
title2.Text = "报表名称"  '设置文本对象的内容
title2.Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
title2.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中
title2.Style.Spacing.Bottom = 3
tra.Children.Add(title2)

'设置列标题
rt.cells(1,0).SpanCols = 3  '合并第一行前三个单元格
rt.Cells(1,3).SpanCols = 3  '合并第一行最后三个单元格
rt.cells(1,0).Text = "第一季度"  '设置第一行第一个单元格的内容
rt.Cells(1,3).Text = "第二季度"  '设置第一行第四个单元格的内容
rt.Cells(1,0).Text= "华东"
rt.Cells(1,1).Text = "华南"
rt.Cells(1,2).Text = "华北"
rt.Cells(1,3).Text= "华东"
rt.Cells(1,4).Text = "华南"
rt.Cells(1,5).Text = "华北"
rt.Cols(0).Width = 100
rt.Cols(1).Width = 100
rt.Width = "Auto" '表格宽度为自动,也就是等于各列设置宽度之和


'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded  '遇到合并单元格超出页宽时会卡死!!!!!!!!!

rt.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '不会卡死

rt.Cells(0,0).SpanCols = 6 '合并,用于显示主标题,***当表宽超出页宽,且为水平换页时会被卡死。

rt.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
rt.Rows(0).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
'rt.Rows(0).Height = 8 '设置第二行的高度,拉开和表格主体的距离.

Doc.Body.Children.Add(rt)

rt.RowGroups(0,4).Header = prt.TableHeaderEnum.All  '前四行作为表头
'给表格增加行测试效果
For i As Integer =  2  To  100 '增加100行
    rt.Cells(i + 2,  0).Text = i
Next
Doc.Preview() '预览报表

[此贴子已经被作者于2014-10-20 14:40:29编辑过]

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


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

 没办法,你得去避免


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2014/10/20 14:59:00 [只看该作者]

lee  首先这个写法 不需要这样:
 Dim title2 As new prt.RenderText    定义好了 可以
title2 = new prt.RenderText 

下面可以

 第二 你试试:

 rt.cols.count = 6 定义列的数量

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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2014/10/20 15:20:00 [只看该作者]

以下是引用blackzhu在2014-10-20 14:59:00的发言:
lee  首先这个写法 不需要这样:
 Dim title2 As new prt.RenderText    定义好了 可以
title2 = new prt.RenderText 

下面可以
=========================
我想在第一行中加入几行文字做表头,所以用了readerArea对象。


++++++++++++++++++++++++
 第二 你试试:

 rt.cols.count = 6 定义列的数量 
定义数量一样不行。


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


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

  如果有冲突,就是不允许的,你必须避免这种冲突。

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2014/10/20 15:28:00 [只看该作者]

你写标题也可以这样写呀

rt.cells(0,0).Text="公司名称"

rt.Cells(0,0).text = "xxxxxx公司"
rt.cells(0,0).SpanCols = 6
rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
rt.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.Cells(0,0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
rt.Rows(0).Height = 10 '设置第二行的高度,拉开和表格主体的距离.

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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2014/10/20 16:11:00 [只看该作者]

以下是引用blackzhu在2014-10-20 15:28:00的发言:
你写标题也可以这样写呀

rt.cells(0,0).Text="公司名称"

rt.Cells(0,0).text = "xxxxxx公司"
rt.cells(0,0).SpanCols = 6
rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
rt.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.Cells(0,0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
rt.Rows(0).Height = 10 '设置第二行的高度,拉开和表格主体的距离.

没办法,我这写的是通用报表。所以不能写死。

只能自已计算宽度,避免这种情形发生。
请教个问题:如果将rt.Rows(0).Height转成数值型,使其能参与计算?
谢谢!


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


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

 直接 rt.Rows(0).Height.Value

 

 反向 new C1.C1Preview.Unit(Cstr(10))


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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2014/10/20 16:25:00 [只看该作者]

以下是引用有点甜在2014-10-20 16:15:00的发言:

 直接 rt.Rows(0).Height.Value

 

 反向 new C1.C1Preview.Unit(Cstr(10))


谢谢,下面错误,如何排除"Auto“?



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




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


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

 直接判断字符auto即可。


 回到顶部
总数 12 1 2 下一页