编码导出折叠模式数据

编码导出折叠模式的数据,并根据行的从属关系自动缩进, 关键在于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表如下,项目列已经按照行的从属关系进行了自动缩进:

 


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