编码导出折叠模式数据
编码导出折叠模式的数据,并根据行的从属关系自动缩进, 关键在于Row的GetValue方法和Hierarchy属性。
我们来看一个例子:
1、打开CaseStudy目录下的示例文件: 折叠模式.Table
2、选择表"项目"表,并打开折叠模式。
3、在命令窗口执行以下代码:
Dim
dt As
Table = Tables("项目")
Dim
nms() As
String = {"级码","项目","数量","单价","金额"}
'要导出的列名
Dim
szs() As
Integer = {150,200,80,80,120}
'对应的列宽
Dim
Book As
New XLS.Book
'定义一个Excel工作簿
Dim
Sheet As
XLS.Sheet =
Book.Sheets(0)
'引用工作簿的第一个工作表
For
c As
Integer = 0
To nms.length
-1
Sheet(0,
c).Value =
nms(c)
'指定列标题
Sheet.Cols(c).Width
= szs(c)
'指定列宽
Next
For
r As
Integer = 0
To dt.Rows.Count
- 1 '填入数据
Dim
rw As
Row = dt.rows(r)
For c
As Integer
= 0 To
nms.length -1
If dt.GridTreeVisible
Then
'如果处于折叠模式
If nms(c)
= "金额"
Then
Sheet(r
+ 1, c).Value
= rw.GetValue("金额")
ElseIf
nms(c) =
"项目"
Sheet(r
+ 1, c).Value
= new String("
", rw.Hierarchy
* 2) &
rw("项目")
Else
Sheet(r
+ 1, c).Value
= rw(nms(c))
End If
Else
Sheet(r
+ 1, c).Value
= rw(nms(c))
End If
Next
Next
Dim
dlg As
New SaveFileDialog
'定义一个新的SaveFileDialog
dlg.Filter=
"Excel文件|*.xls"
'设置筛选器
If
dlg.ShowDialog
= DialogResult.Ok
Then
Book.Save(dlg.FileName)
Dim Proc
As New
Process
Proc.File
= dlg.FileName
Proc.Start()
End
If
提示:金额列的值必须用GetValue方法获取,常规方法获取分组行金额列的值,返回的是0。
得到的Excel表如下,项目列已经按照行的从属关系进行了自动缩进: