以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 专业报表合并 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2991) |
-- 作者:狐哥 -- 发布时间:2009/6/2 14:18:00 -- 专业报表合并 哪位老师帮我看看如下公式,我想让前六列(按照第一列内容 "工作号" 相同) 相同内容合并,公式不会做. [此贴子已经被作者于2009-6-2 14:24:34编辑过]
|
-- 作者:yangming -- 发布时间:2009/6/2 14:41:00 -- 不太明白,是前六列的什么合并?单元格? |
-- 作者:狐哥 -- 发布时间:2009/6/2 14:48:00 -- 比如: 工作号 列1 列2 列3 ... 列7 001 M N S A1 001 M N S A2 002 M V P A3 002 M V P A4 合并后为: 工作号 列1 列2 列3 .... 列7 001 M N S A1 A2 002 M V P A3 A4 |
-- 作者:yangming -- 发布时间: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编辑过]
|
-- 作者:狐哥 -- 发布时间:2009/6/2 15:28:00 -- 姐姐,我是只要求合并前6列,根据第一列内容来合并.不是所有列. For c As Integer = 0 To tb.Cols.Count -1 这个公式如何改为: For c As Integer = 0 To 6,前6列 [此贴子已经被作者于2009-6-2 15:28:10编辑过]
|
-- 作者:yangming -- 发布时间:2009/6/2 15:35:00 -- 你第七列的数据不是每行都不一样吗?这就不会合并了啊 |
-- 作者:yangming -- 发布时间:2009/6/2 16:14:00 -- 看红色部分 rt.Cells(FirstRow,c).SpanRows = rt.Cells(FirstRow,c).SpanRows + 1 Else doc.Body.Children.Add(rt) \'将表格对象加入到报表中 [此贴子已经被作者于2009-6-2 16:14:10编辑过]
|
-- 作者:狐哥 -- 发布时间:2009/6/2 16:23:00 -- 感谢MING姐,我试试 |
-- 作者:狐哥 -- 发布时间:2009/6/2 16:26:00 -- 成功了,感谢MING姐. |
-- 作者:狐哥 -- 发布时间: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姐. |