在BIRT上的表格细节中垂直合并单元格

时间:2014-05-30 02:44:06

标签: excel reporting grouping birt

是否可以"合并"垂直排,以便报告看起来更整洁?如下:

+-----------+--------+--------------+
| Tbl Hdr   | Group  |    User      |
+-----------+--------+--------------+
|Very long  | [User] | [Reputation] |
|description+--------+--------------+
|of the     | [User] | [Reputation] | 
|group      +--------+--------------+
|           |        |              |
+-----------+--------+--------------+

代替:

+-----------+--------+--------------+
| Tbl Hdr   | Group  |    User      |
+-----------+--------+--------------+
|Very long  | [User] | [Reputation] |
|description|        |              |
|of the     |        |              |
|group      |        |              |
+-----------+--------+--------------+
|           | [User] | [Reputation] | 
+-----------+--------+--------------+
|           |        |              |
+-----------+--------+--------------+

我可以通过在报告中使用jQuery代码进行合并,但当然只能使用HTML。 我无法在excel中找到解决方案,可能是我不知道的一些技巧。或者不知何故,我可以在Java代码中的IRunTask run()之后按代码合并。 Iam使用Eclipse BIRT Designer版本4.3.2.v20140211-1400构建< 4.3.2.v20140218-1056>

感谢阅读。

3 个答案:

答案 0 :(得分:1)

我认为您需要在表格中使用分组功能。

其中一个教程是:http://developer.actuate.com/be/documentation/ihub2-web/birtos/fg44/index.html#page/birt-os/grouping.1.16.html

Google更多地使用关键字" BIRT表分组",并且也不要忘记使用"删除详细信息"在组标题单元格中。在你的情况下,它将是包含"非常长的描述"文本。

答案 1 :(得分:0)

关于你的第一个问题:

您可以垂直合并行,方法与水平方式相同。

选择单元格,然后单击合并

答案 2 :(得分:0)

要在您的示例中完全按照您的要求执行操作,您只需选择带有"非常长的描述的单元格"并选择" Unmerge cells"。这将使细胞在#34; Tbl Header"列中取消合并。并将内容复制到列中的顶部单元格(正好在" Tbl Hdr"单元格下)。

但是从你的问题来看,听起来你正在寻找一种合并垂直细胞的方法。

以下宏将执行此操作。选择要合并的单元格,然后运行宏。

宏在一列中的垂直选定单元格集上工作。它将删除单元格的内容,并在顶部单元格中放置所有单元格的合并版本(由换行符分隔)。

注意宏中注释掉的3行,到最后。如果取消注释这些,宏也将删除其内容现在合并到顶部单元格的行。这有时很有用。

Sub MergeCells()

Dim myString As String
Dim myUnion As Range

    Count = Selection.Count

    If Count > 1 Then

        myValue = Selection

        myrow = Selection.Row
        mycol = Selection.Column


        myString = ""


        For Index = 1 To Count
            If Index > 1 Then myString = myString & Chr(10) & myValue(Index, 1) Else myString = myValue(Index, 1)
        Next Index

          Selection.ClearContents
          Cells(myrow, mycol) = myString

'         For Index = 1 To Count - 1
'            Rows(myrow + 1).Delete
'         Next Index

            Cells(myrow, mycol).Select

    End If

End Sub

问候,迈克尔