折叠模式与Excel报表

本示例的目的是在生成Excel报表时,能根据折叠模式下行的从属关系进行自动缩进。

实现此功能的关键在于Row的GetValue方法和
Hierarchy属性。

1、打开CaseStudy目录下的示例文件: 折叠模式.Table

2、选择表"项目"表,并打开折叠模式。


3、我们已经在Attachments目录下设计了一个报表模板,名称为"折叠模式.xls",格式为如下,注意金额和项目用的是尖括号,而不是方括号,原因参考:
使用标记

4、在报表事件BeforeBuild中加上代码:

Select Case e.Book.TempLate
    Case "折叠模式"
        e.Book.Marks.Add("项目", "")
        e.Book.Marks.Add("金额", 0)

End
Select

5、在报表事件BuildDetail事件中加上代码:

Select Case e.Book.TempLate
    Case "折叠模式"
        If Tables("项目").GridTreeVisible Then
            Dim wz As Integer = Tables("项目").FindRow(e.DataRow)
            If wz >=0 Then
                Dim rw As Row =Tables("项目").Rows(wz)
                e.Book.Marks("项目") = new String(" ", rw.Hierarchy * 2) & rw("项目")
                e.Book.Marks("金额") = rw.GetValue("金额")
                Return
            End If
        End If
        e.Book.Marks("项目") = e.DataRow("项目")
        e.Book.Marks("金额") = e.DataRow("金额")

End
Select

提示:金额列的值必须用GetValue方法获取,常规方法获取分组行金额列的值,返回的是0。

7、重据此模板生成报表,得到的结果如下,项目列按照行的从属关系进行了缩进:


本页地址:http://www.foxtable.com/webhelp/topics/3734.htm