Foxtable(狐表)用户栏目专家坐堂 → IF的执行效率问题


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

主题:IF的执行效率问题

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
IF的执行效率问题  发帖心情 Post By:2016/8/26 11:12:00 [显示全部帖子]

代码如下:标红部分的代码执行效率非常低,麻烦老师给看一下如何优化?
 
For k As Integer = 1 To wb.workSheets.Count '//多个sheet的处理
            Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(k)
            Dim Rg As MSExcel.Range = Ws.UsedRange
            Dim ary = rg.value
            If ary IsNot Nothing Then  '2016-8-22 判断EXCEL不能为空
                lbl8.text = "行:" & rg.Rows.Count & "," & "列:" & rg.Columns.Count
                For i As Integer = 1 To rg.Rows.Count
                    For j As Integer = 1 To rg.Columns.Count
                        If ary(i,j) <> Nothing Then
                            If Cbox1.Checked = True  AndAlso Cbox2.Checked=True AndAlso System.Text.RegularExpressions.Regex.Match((ary(i,j)),"[\u4e00-\u9fa5]+").Tostring()>"" =True Then
                                Dim dr As DataRow = DataTables("翻译内容").AddNew
                                dr("第一列") = ary(i,j)
                                lbl5.text = ary(i,j)
                            ElseIf CBox1.Checked = True AndAlso System.Text.RegularExpressions.Regex.Match((ary(i,j)),"[\u4e00-\u9fa5]+").Tostring()>"" =True AndAlso Cbox2.Checked=False AndAlso rg.Columns(j).width <> 0 AndAlso rg.Rows(i).height <> 0 Then
                                Dim dr As DataRow = DataTables("表A").AddNew
                                dr("第一列") = ary(i,j)
                                lbl5.text = ary(i,j)
                            ElseIf CBox2.Checked = True AndAlso Cbox1.Checked=False Then
                                Dim dr As DataRow = DataTables("表A").AddNew
                                dr("第一列") = ary(i,j)
                                lbl5.text = ary(i,j)
                            ElseIf   cbox1.checked=False AndAlso cbox2.checked=False AndAlso rg.Columns(j).width <> 0 AndAlso rg.Rows(i).height <> 0 Then
                                Dim dr As DataRow = DataTables("表A").AddNew
                                dr("第一列") = ary(i,j)
                                lbl5.text = ary(i,j)
                            End If
                        End If
                    Next
                Next
            End If
        Next
        Wb.Close()


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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/8/26 11:50:00 [显示全部帖子]

老师们,帮忙看看呗。

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/8/26 12:10:00 [显示全部帖子]

老师,按您的方法改了一下效率还是一样,没有提升。还有其他办法吗?

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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/8/26 12:56:00 [显示全部帖子]

代码的最终目的是要把EXCEL各单元格里的数据抽取到狐表中,
lbl5.text = ary(i,j)  只是想在窗口界面 中看到正在抽取的数据,去掉了也没有用。

 回到顶部