折叠模式与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、重据此模板生成报表,得到的结果如下,项目列按照行的从属关系进行了缩进: