Foxtable(狐表)用户栏目专家坐堂 → 导出选中行


  共有2126人关注过本帖树形打印复制链接

主题:导出选中行

帅哥哟,离线,有人找我吗?
deliangzhaoe
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:364 积分:3491 威望:0 精华:0 注册:2012/7/24 7:15:00
导出选中行  发帖心情 Post By:2019/8/28 21:05:00 [只看该作者]

现在代码是导出所有行,想只导出复选框选中的行,怎么改一下代码?
Dim dt As Table = Tables("设备设施清单")
Dim nms() As String  = {"企业名称","编号","设备名称","类别","是否特种设备","数量","部门或车间","岗位或地点","责任人员","备注"} '要导出的列名
Dim caps() As String = {"企业名称","编号","设备名称","类别","是否特种设备","数量","部门或车间","岗位或地点","责任人员","备注"} '对应的列标题
Dim hlvl As Integer = 3
Dim szs() As Integer = {100,100,80} '对应的列宽
Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim jz As xls.style = book.NewStyle
jz.AlignHorz = XLS.AlignHorzEnum.Center
jz.AlignVert = XLS.AlignVertEnum.Center
For c As Integer = 0 To nms.length -1
    Dim ary() As String = caps(c).split("_")
    For i As Integer = 0 To ary.length-1
        sheet(i, c).value = ary(i)
        sheet(i, c).Style = jz
    Next
Next
For i As Integer = 0 To hlvl-1
    Dim pi As Integer = 0
    For c As Integer = 0 To nms.length -2
        If sheet(i,c).text = sheet(i,c+1).text Then
            Dim flag As Boolean = True
            For k As Integer = i-1 To 0 Step -1
                If sheet(k,c).value <> sheet(k,c+1).value Then
                    flag = False
                End If
            Next
            If flag Then
                pi += 1
            Else
                pi = 0
            End If
        Else
            sheet.MergeCell(i, c-pi, 1, pi+1)
            pi = 0
        End If
    Next
    sheet.MergeCell(i, nms.length-pi-1, 1, pi+1)
Next
For c As Integer = 0 To nms.length -1
    Dim pi As Integer = 0
    For i As Integer = hlvl-1 To 0 Step -1
        If sheet(i, c).text = "" Then
            pi += 1
        Else
            sheet.MergeCell(i, c, pi+1, 1)
            Exit For
        End If
    Next 
Next
For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r+hlvl, c).Value = dt.rows(r)(nms(c))
    Next
Next
Dim fl As String = ProjectPath & "Reports\设备设施清单.xls"
Book.Build() '生成细节区
Book.Save(fl) '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/29 9:32:00 [只看该作者]

For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r+hlvl, c).Value = dt.rows(r)(nms(c))
    Next
Next

改为

dim rs as List(of row) = dt.GetCheckedRows
For each r As Integer = 0 To rs.Count - 1 '填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r+hlvl, c).Value = rs (r)(nms(c))
    Next
Next

 回到顶部
帅哥哟,离线,有人找我吗?
deliangzhaoe
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:364 积分:3491 威望:0 精华:0 注册:2012/7/24 7:15:00
  发帖心情 Post By:2019/8/29 20:02:00 [只看该作者]

现在出现了一个问题:
表中还有若干个逻辑列,我看到导出的是:行的复选框选中,且这些逻辑列全部为false的行。
应该不受这些逻辑列的影响,导出所有行复选框选中的行。
代码还有不对的地方吗?

 回到顶部
帅哥哟,离线,有人找我吗?
deliangzhaoe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:364 积分:3491 威望:0 精华:0 注册:2012/7/24 7:15:00
  发帖心情 Post By:2019/8/29 21:14:00 [只看该作者]

问题不是出在这里

 回到顶部