Foxtable(狐表)用户栏目专家坐堂 → 专业报表合并


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

主题:专业报表合并

美女呀,离线,留言给我吧!
yangming
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/2 14:41:00 [显示全部帖子]

不太明白,是前六列的什么合并?单元格?

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/2 15:11:00 [显示全部帖子]

我给你的代码加了头和尾,是可以按你的要求打印的啊
Dim doc As New PrintDoc
Dim tb as Table = Tables("表A")
Dim rt As New prt.RenderTable() '定义一个表格对象
rt.Style.GridLines.All = New prt.Linedef '设置网格线
For c As Integer = 0 To tb.Cols.Count -1
        Dim FirstRow As Integer = 1
        For r As integer = 0 To tb.Rows.Count -1
                If tb(r,c) Is Nothing Then
                    Continue for
                End if
               If r > 0 AndAlso tb.Cols(c).IsString AndAlso tb(r,c) = tb(r-1,c) Then
                    rt.Cells(FirstRow,c).SpanRows = rt.Cells(FirstRow,c).SpanRows  + 1
                Else
                    rt.Cells(r + 1, c).Text = tb(r,c)
                    FirstRow = r + 1
                End if
            Next
   Next
doc.Body.Children.Add(rt) '将表格对象加入到报表中
doc.Preview()

[此贴子已经被作者于2009-6-2 15:12:03编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/2 15:35:00 [显示全部帖子]

你第七列的数据不是每行都不一样吗?这就不会合并了啊

 回到顶部
美女呀,离线,留言给我吧!
yangming
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/2 16:14:00 [显示全部帖子]

看红色部分
Dim doc As New PrintDoc
Dim tb as Table = Tables("表A")
Dim rt As New prt.RenderTable() '定义一个表格对象
Dim ColNames As New List(Of String)
For Each cl As Col In tb.Cols '排除隐藏列
    If cl.Visible Then
        ColNames.Add(cl.Name)
    End If
Next
rt.Style.GridLines.All = New prt.Linedef '设置网格线
For c As Integer = 0 To tb.Cols.Count -1
        Dim FirstRow As Integer = 1
        For r As integer = 0 To tb.Rows.Count -1
                If tb(r,c) Is Nothing Then
                    Continue for
                End if
         If r > 0 AndAlso c <= 5 AndAlso tb.Cols(c).IsString AndAlso tb(r,c) = tb(r-1,c) Then

                    rt.Cells(FirstRow,c).SpanRows = rt.Cells(FirstRow,c).SpanRows + 1

                Else
                    rt.Cells(r + 1, c).Text = tb(r,c)
                    FirstRow = r + 1
                End if
            Next
   Next

doc.Body.Children.Add(rt) '将表格对象加入到报表中
doc.Preview()

[此贴子已经被作者于2009-6-2 16:14:10编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/2 19:32:00 [显示全部帖子]

以下是引用狐哥在2009-6-2 19:10:00的发言:
If r > 0 AndAlso c <= 5 AndAlso tb.Cols(c).IsString AndAlso tb(r,c) = tb(r-1,c) Then

将上面红色部分改的列C改成实际列名,就可以按条件合并了.如:   tb(r,"工作号") = tb(r-1,"工作号") 就可以工作号条件将相同的列合并,而避免报关不美观.
再次感谢热心MING姐.

我也学了一招,呵呵


 回到顶部