Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
Dim App As New MSExcel.Application
try
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("计划表")
Dim Rg As MSExcel.Range = Ws.UsedRange
Dim ary = rg.value
Tables("配载订单").ResumeRedraw()
Tables("配载订单").StopRedraw()
Dim nms() As String = {"项目","下单日期","MK号","DO号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期"}
Dim count As Integer = 0
Dim ls As new List(of Integer)
Dim dic As new Dictionary (Of DataRow, Integer)
For n As Integer = 2 To ws.UsedRange.Rows.Count -1
Dim filter As String = "1=1"
For m As Integer = 0 To nms.length-1
Dim vl As object = ary(n,m+1)
Dim dc As String = nms(m)
Dim c As Col = Tables("配载订单").Cols(dc)
If vl = Nothing Then
filter &= " and " & dc & " is null"
Else
If c.IsNumeric Then
filter &= " and " & dc & " >= " & vl - 0.0001 & " and " & dc & " <= " & vl + 0.0001
ElseIf c.IsBoolean Then
If vl = True Then
filter &= " And " & dc & " = true"
Else
filter &= " and " & dc & " = false"
End If
ElseIf c.IsDate Then
Dim d As Date
If Date.TryParse(vl, d)
filter &= " and " & dc & " = #" & d.Date & "#"
End If
Else
filter &= " and " & dc & " = '" & vl & "'"
End If
End If
Next
Dim dr As DataRow = DataTables("配载订单").find(filter)
If dr Is Nothing Then
output.show(filter)
ls.Add(n)
count += 1
Else
dic.add(dr, n)
End If
Next
For Each n As Integer In ls
Dim r As Row = Tables("配载订单").AddNew()
For m As Integer = 0 To nms.Length - 1
If ary(n,m+1) = Nothing Then
r(nms(m)) = Nothing
Else
If Tables("配载订单").Cols(nms(m)).IsDate Then
Dim d As Date
If Date.TryParse(ary(n,m+1), d)
r(nms(m)) = d
End If
Else
r(nms(m)) = ary(n,m+1)
End If
End If
Next
Next
Tables("配载订单").ResumeRedraw()
msgbox("共有 "& count &" 条数据导入" )
catch ex As exception
msgbox(ex.message)
finally
app.quit
End try
End If
Tables("配载订单").save
e.Form.Controls("提示").Text = "正在导入,请稍后..."
Application.DoEvents()
e.Form.Controls("提示").Text = "已经导入完成."
e.Form.TimerInterval = 5000
e.Form.TimerEnabled = True