表在折叠模式下,有的行为1层,有的行为2至3层,现在只导出没有子行的行和有子行的第二层(有子行只导出第二层,第一层或第三层忽略),不想在导出的表中有空白行,
Dim dt As Table = Tables("调度排工_Table1")
Dim nms() As String = {"编号","用车日期","车辆来源","车辆牌照","司机","指挥","车型","计费车型","用车单位","二级单位或地点","作业内容","联系人","联系电话","到场时间","预计用时","备注"} '要导出的列名
Dim szs() As Integer = {200,100,80,80,80,80,80,80,100,100,150,80,80,80,80,150} '对应的列宽
Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim i As Integer = 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 rw.Hierarchy=0 And rw.HasChild()=False Or rw.Hierarchy=1 Then '没有子行的第一层和第二层,直接导出
Sheet(r - i + 1,c).Value = rw(nms(c)) ‘出错位置
Else
i += 1
Continue For '其它忽略
End If
'========================================================
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
[此贴子已经被作者于2022/7/6 14:17:32编辑过]