以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教:专业报表卡死。是否为BUG?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=58591)

--  作者:关键下一秒
--  发布时间:2014/10/20 14:40:00
--  请教:专业报表卡死。是否为BUG?
有如下代码,现在想表头每页打印,但遇到下面代码冲突(标有红色代码冲突)。是否有解决方案?
谢谢!

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编辑过]

--  作者:有点甜
--  发布时间:2014/10/20 14:51:00
--  

 没办法,你得去避免


--  作者:blackzhu
--  发布时间:2014/10/20 14:59:00
--  
lee  首先这个写法 不需要这样:
 Dim title2 As new prt.RenderText    定义好了 可以
title2 = new prt.RenderText 

下面可以

 第二 你试试:

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

--  作者:关键下一秒
--  发布时间: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 定义列的数量 
定义数量一样不行。


--  作者:有点甜
--  发布时间:2014/10/20 15:26: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 \'设置第二行的高度,拉开和表格主体的距离.

--  作者:关键下一秒
--  发布时间: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转成数值型,使其能参与计算?
谢谢!


--  作者:有点甜
--  发布时间:2014/10/20 16:15:00
--  

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

 

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


--  作者:关键下一秒
--  发布时间: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
图片点击可在新窗口打开查看




--  作者:有点甜
--  发布时间:2014/10/20 16:26:00
--  

 直接判断字符auto即可。