如果希望出现一个打开文件对话框,导入用户指定的文件,可以参考下面的代码:
Dim dlg As New
OpenFileDialog
'定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls"
'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
Dim ip As New
Importer
ip.SourcePath = dlg.FileName
'指定数据文件
ip.SourceTableName = "订单"
'指定要导入的表
ip.NewTableName ="订单"
'导入后的表名
ip.Import()
End If
合并数据
如果订单表中已经存在相同编号的订单,那么就跳过此订单,可以将代码改为:
Dim Book As New XLS.Book("c:\test\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"编号","产品","客户","雇员","单价","折扣","数量","日期"}
'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
Dim bh As String = sheet(n,0).Text
If DataTables("订单").Find("编号 = '" & bh & "'") Is Nothing Then '如果不存在同编号的订单
Dim r As Row = Tables("订单").AddNew()
For m As Integer = 0 To nms.Length - 1
r(nms(m)) = Sheet(n,m).Value
Next
End If
Next
Tables("订单").ResumeRedraw(
如果表A和表B的结构不同,或者只需填充部分列,就需要定义数据来源列和数据接收列,例如:
Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
Dim dr2 As DataRow = DataTables("表B").AddNew()
For i As Integer = 0 To Cols1.Length -1
dr2(Cols2(i)) = dr1(Cols1(i))
Next
Next