我的目的是设计一个功能,能 从外部 excell 导入物料信息 ,table名为
“商品基本信息” ,有四个数据列("厂家","商品编码","品名及规格","商品类别"),导入的excell 格式也调整为和 table 一致
。如下代码,导入 数据行
几十行的时候比较
正常,想要
一次导入约2万行的时候就会狐表
卡死,设备应该无问题( i5处理器 ,8G 内存)。 求 高手指点 如何改善代码,解决卡死问题?
以下是代码
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
Dim Book As New XLS.Book(dlg.FileName)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("商品基本信息").StopRedraw()
Dim nms() As String = {"厂家","商品编码","品名及规格","商品类别"}
For n As Integer = 1 To Sheet.Rows.Count -1
Dim bh As String = sheet(n,0).Text
Dim dr As DataRow = DataTables("商品基本信息").Find("品名及规格 = '" & bh & "'")
If dr Is Nothing Then '如果不存在同编号的订单
dr = DataTables("商品基本信息").AddNew()
End If
For m As Integer = 0
To nms.Length - 1 dr(nms(m)) = Sheet(n,m).Value
Next
Next
Tables("商品基本信息").ResumeRedraw()
End If
谢谢大家的帮助
出于试验心态,将代码做如下修改(不find,直接导入),结果也是 数据量少的时候正常,导入2万行数据依然卡死,上传了实例,求突破!
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
Dim Book As New XLS.Book(dlg.FileName)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("商品基本信息").StopRedraw()
Dim nms() As String = {"厂家","商品编码","品名及规格","商品类别"}
For n As Integer = 1 To Sheet.Rows.Count -1
Dim r As Row = Tables("商品基本信息").AddNew()
For m As Integer = 0 To nms.Length - 1
r(nms(m)) = Sheet(n,m).Value
Next
Next
Tables("商品基本信息").ResumeRedraw()
End If
[此贴子已经被作者于2015/6/9 19:12:58编辑过]