以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于代码优化 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=142528) |
-- 作者:ygg8310 -- 发布时间: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 实际数据很多用了分页加载,如何让它更快?
|
-- 作者:有点蓝 -- 发布时间:2019/10/29 22:29:00 -- 这个没有什么很好的方法,主要还是看execl里的数据。 如果execl里的编号都是连贯的,或者在某个范围之内,可以先把这个范围内的"表A"数据都加载出来,再进行判断 如果execl里的编号数据都是比较零散,没有什么规律,在数据库添加一个临时表 1、如果execl数据少,可以把数据全部导入个临时表,然后通过sql进行处理 2、如果execl数据比较多,可以分批导入临时表,然后通过sql进行处理
|