Foxtable(狐表)用户栏目专家坐堂 → [求助]如何优化excel表中取值代码


  共有3036人关注过本帖平板打印复制链接

主题:[求助]如何优化excel表中取值代码

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


加好友 发短信
等级:幼狐 帖子:173 积分:2083 威望:0 精华:0 注册:2013/6/26 22:03:00
[求助]如何优化excel表中取值代码  发帖心情 Post By:2021/8/27 17:46:00 [只看该作者]

300个excel文件读入数据特别慢,基本上是1秒1条,CPU占用率高达48%,麻烦大家给点优化建议。


以下内容为程序代码:

1 '打开excel文件
2 '循环前50行,30列各单元格是否包含 工作总量 关键字
3 '如果包含则增加一行,然后循环查找数组中的值与excel文件各单位比对,找到后取出该傎对应的数值
4
5
6 For Each file As String In filesys.GetFiles("E:\360极速浏览器下载\工作量")
7 If file.EndsWith(".xls") Then
8 Dim filename = file.SubString(file.Length-14,10)
9 Dim Book As New XLS.Book(file)
10 Dim Sheet As XLS.Sheet = Book.Sheets(0)
11 For i As Integer = 20 To 50 '行
12 For k As Integer = 1 To 30 '列
13 Dim jbbg As String = sheet(i,k).Value '查找 工作总量 关键字
14 If jbbg.Contains("工作总量") Then '找到关键字后开始循环取出数组中的各项数据
15 Dim dr As Row =Tables("表A").AddNew
16 Dim cs() As String = {"值班日期","工作总量","访问量","责任人","工作平台"}
17 For m As Integer = 0 To cs.Length - 1
18 'MessageBox.Show("这是从数组中取的第" & m & "次循环值是:" & cs(m))
19 For n As Integer = 20 To 50 '从行开始循环
20 For o As Integer = 0 To 40 '从列开始循环
21 Dim gjj As String = sheet(n,o).value '查找关键字
22 If gjj.StartsWith(cs(m)) Then
23 If m =0 Or m=6 Or m=7 Or m=9 Or m=10 Or m=12 Or m=13 Then
24 dr(cs(m)) = sheet(n,o+1).Text
25 ElseIf m =1 Or m=8 Or m=11 Or m=14 Or m=15 Or m=16 Or m=17 Or m=18 Then
26 dr(cs(m)) = sheet(n,o+2).Text
27 Else
28 dr(cs(m)) = sheet(n,o+3).Text
29 End If
30 Exit For
31 Else '因为部分表中没有表头部分的日期,无法取出日期则需要将文件名日期引用进来
32 dr(cs(0)) = filename
33 End If
34 Next
35 Next
36 Next
37 Exit For
38 End If
39 Next
40 Next
41 End If
42 Next
43 MessageBox.Show("数据导入成功.","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

 回到顶部