Foxtable(狐表)用户栏目专家坐堂 → 导入excel优化


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

主题:导入excel优化

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


加好友 发短信
等级:小狐 帖子:309 积分:2481 威望:0 精华:0 注册:2019/7/19 13:09:00
导入excel优化  发帖心情 Post By:2020/3/20 15:19:00 [只看该作者]

求老师帮助优化导入化码,目前导入没有问题,就是太慢,导入6条要60秒左右,有没有更好的代码写法?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档.txt


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109760 积分:558516 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/20 15:47:00 [只看该作者]

快不了多少了,每一行都要查询数据库,还要保存图片到共享目录里。

……
Dim Book As New XLS.Book(dlg.FileName)
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Dim dict As new Dictionary(of String,Integer)
For iii As Integer = 0 To sheet.Cols.Count -1
    dict.Add(sheet(0,iii).Text,iii)
Next

Dim bh As Date
Dim bj As String
Dim ba As String
Dim bi As String
Dim bl As String
Dim bx As String
For n As Integer = 1 To Sheet.Rows.Count -1
    bh = sheet(n,dict("下单时间")).Value
    bj  = sheet(n,dict("长款号")).Text
    ba  = sheet(n,dict("淘宝")).Text
    bi = sheet(n,dict("唯品会")).Text
    bl  = sheet(n,dict("第三方")).Text
    bx  = sheet(n,dict("汇总")).Text
    'Dim bk As String = sheet(n,146).Text
    ' If bk > "" Then
    Dim Filter As String = "下单时间 = '" & bh & "' and 长款号 = '" & bj & "'"
    If ba > "" Then
        filter = Filter & " And " & "淘宝 = '" & ba & "'"
    End If
    If bi > "" Then
        filter = Filter & " And " & "唯品会 = '" & bi & "'"
    End If
    If bl > "" Then
        filter = Filter & " And " & "第三方 = '" & bl & "'"
    End If
    If bx > "" Then
        filter = Filter & " And " & "汇总 = '" & bx & "'"
    End If
    DataTables("下单表").AppendLoad(Filter,False)
    r = DataTables("下单表").Find(Filter)
    If r IsNot Nothing Then
        For i As Integer = 0 To sheet.Cols.Count -1
            For Each m As String In nms
                Dim cname As String = sheet(0, i).Value
                If cname >"" AndAlso cname = m Then
                    If Sheet(n,i).text > "" Then
                        r(m) = Sheet(n,i).Value
                    End If
                End If
                If cname = "图片" Then
                    Dim fl As String = "\\10.100.100.129\产品中心\foxtable资料\图片\" & r("长款号") & ".jpg"
                    If Sheet(n,i).SaveImage(fl) Then '如果照片保存成功
                        r("图片") = fileSys.GetName(fl)
                    End If
                End If
            Next
        Next
    Else
        r = DataTables("下单表").AddNew()
……

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


加好友 发短信
等级:小狐 帖子:309 积分:2481 威望:0 精华:0 注册:2019/7/19 13:09:00
  发帖心情 Post By:2020/3/21 8:55:00 [只看该作者]

老师,谢谢,有办法不查询后台吗?

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


加好友 发短信
等级:狐神 帖子:4724 积分:34374 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2020/3/21 9:03:00 [只看该作者]

上例子试试

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

把表格数据都加载出来就不需要查询后台了。

当然要看数据量的多少,如果数据太多,几十上百万行,全部加载也是不现实的。如果经常需要这样导入数据的,可以做个服务端项目放到服务器运行,专门用来导入数据

 回到顶部