以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]下面这段 代码如何优化? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89122) |
-- 作者:18523982317 -- 发布时间:2016/8/16 8:33:00 -- [求助]下面这段 代码如何优化? Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "excle|*.xlsx" \'设置筛选器 Dim c As Integer = 0 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("工资总表导入").StopRedraw() For sr As Integer = 1 To sheet.Rows.Count -1 Dim r As Row = Tables("工资总表导入").AddNew For sc As Integer = 0 To sheet.Cols.Count -1 For Each dc As DataCol In DataTables("工资总表导入").DataCols If dc.Name = sheet(0,sc).Value Then r(dc.name) = sheet(sr,sc).Value End If Next Next c = c +1 Next Tables("工资总表导入").ResumeRedraw() MessageBox.Show("导入完成,共导入" & c & "条记录") End If 求这段代码优化,数据导入时间过长
|
-- 作者:Hyphen -- 发布时间:2016/8/16 9:02:00 -- Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "excle|*.xlsx" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Dim t As Table = Tables("工资总表导入") t.StopRedraw() Dim c As Integer = t.Rows.Count Dim dict As new Dictionary(of Integer,String) For sc As Integer = 0 To sheet.Cols.Count -1 If t.Cols.Contains(sheet(0,sc).Value) Then dict.Add(sc,sheet(0,sc).Value) End If Next For sr As Integer = 1 To sheet.Rows.Count -1 Dim r As Row = t.AddNew For Each i As Integer In dict.Keys r(dict(i)) = sheet(sr,i).Value Next Next t.ResumeRedraw() MessageBox.Show("导入完成,共导入" & t.Rows.Count - c & "条记录") End If
|
-- 作者:18523982317 -- 发布时间:2016/8/16 9:23:00 -- 以下是引用Hyphen在2016/8/16 9:02:00的发言:
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "excle|*.xlsx" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Dim t As Table = Tables("工资总表导入") t.StopRedraw() Dim c As Integer = t.Rows.Count Dim dict As new Dictionary(of Integer,String) For sc As Integer = 0 To sheet.Cols.Count -1 If t.Cols.Contains(sheet(0,sc).Value) Then dict.Add(sc,sheet(0,sc).Value) End If Next For sr As Integer = 1 To sheet.Rows.Count -1 Dim r As Row = t.AddNew For Each i As Integer In dict.Keys r(dict(i)) = sheet(sr,i).Value Next Next t.ResumeRedraw() MessageBox.Show("导入完成,共导入" & t.Rows.Count - c & "条记录") End If Dictionary 居然还有这个代码。。。。 但是这段代码我复制上去了 报错 错误提示: 列“”不属于表 工资导入。 工资总表导入我改成了工资导入,表重新复制了下源表。。
|
-- 作者:大红袍 -- 发布时间:2016/8/16 15:10:00 -- 2楼代码应该没问题,上传实例说明。 |