Foxtable(狐表)用户栏目专家坐堂 → 关于代码优化


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

主题:关于代码优化

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


加好友 发短信
等级:四尾狐 帖子:989 积分:8833 威望:0 精华:0 注册:2016/4/10 14:33:00
关于代码优化  发帖心情 Post By:2019/10/29 22:11:00 [只看该作者]

Tables("表A").StopRedraw()
For Each file As String In filesys .GetFiles("D:\测试")
    If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
        Dim  Book As New XLS.Book(file)
        Dim  Sheet As XLS.Sheet = Book.Sheets(0)
        '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
        Dim nms() As  String = {"第一列","第二列","第三列"}
        '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim bh0 As String = sheet(n,0).Text
            Dim bh1 As String = sheet(n,1).Text
            Dim bh2 As String = sheet(n,2).Text
            If DataTables("表A").SQLFind("第一列 = '" & bh0 & "' And 第二列 = '" & bh1 & "' And 第三列 = '" & bh2 & "'") Is Nothing Then  '如果不存在同编号的订单 
                Dim r As  Row = Tables("表A").AddNew()
                For  m As  Integer = 0 To nms.Length - 1
                    r(nms(m)) = Sheet(n,m).Value
                Next
            End If
        Next
        Tables("表A").ResumeRedraw()
    End If
Next
实际数据很多用了分页加载,如何让它更快?

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


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

这个没有什么很好的方法,主要还是看execl里的数据。

如果execl里的编号都是连贯的,或者在某个范围之内,可以先把这个范围内的"表A"数据都加载出来,再进行判断

如果execl里的编号数据都是比较零散,没有什么规律,在数据库添加一个临时表
1、如果execl数据少,可以把数据全部导入个临时表,然后通过sql进行处理
2、如果execl数据比较多,可以分批导入临时表,然后通过sql进行处理

 回到顶部