以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教:专业报表卡死。是否为BUG? (http://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“? |
-- 作者:有点甜 -- 发布时间:2014/10/20 16:26:00 -- 直接判断字符auto即可。 |