高速合并多个excel文件时,如何能够将物料代码相同的行的自动合并为一行,并且数量自动累加。即确保物料代码列唯一,而总数量不变。物料代码没有重复的行正常引入即可。
如果可以在高速合并的三个选项中增加这个功能就更好了。
参考:
http://www.foxtable.com/webhelp/topics/2334.htm,合并的时候先查一查是否有同代码的行,有就合并,没有就新增
Dim Book As New XLS.Book("c:\test\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
Dim nms() As String = {"物料代码","数量","列1","列2","……"}
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()
For m As Integer = 0 To nms.Length - 1
dr(nms(m)) = Sheet(n,m).Value
Next
else ‘如果存在就合并数量
dr("数量") = dr("数量")+Sheet(n,1).Value
End If
Next
Tables("订单").ResumeRedraw()
通过版主的指导,已实现需求。但是又碰到另一个问题。我想用OpenFileDialog对话框方式选择excel,而不是只能指定名称和目录读取,请教如何实现。代码如下:DataTables("随货单引入").DataRows.Clear() '清除以前引入的数据
Dim Book As New XLS.Book("c:\test\工作簿3.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Dim nms() As String = {65,"商品编码","商品名称","规格","生产企业","产地","单位","通用名称","按批号开piao"}
For
n As Integer = 1 To Sheet.Rows.Count -1
Dim bh As String = sheet(n,1).Text
Dim dr As DataRow = DataTables("随货单引入").Find("商品编码 = '" & bh & "'")
If dr Is Nothing Then '如果不存在同编号的订单
dr = DataTables("随货单引入").AddNew()
For m As Integer = 0 To nms.Length - 1
dr(nms(m)) = Sheet(n,m).Value
Next
Else
'如果存在就合并数量
dr("销售数量") = dr("销售数量") + Sheet(n,10).Value
End If
Next
DataTables("随货单引入").DeleteFor("单位 Is Null")'删除合计行
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
MessageBox.Show("你选择的是:" & dlg.FileName,"提示") '提示用户选择的文件DataTables("随货单引入").DataRows.Clear() '清除以前引入的数据
Dim Book As New XLS.Book(dlg.FileName)
……
……
End If