以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 高速合并如何实现相同物料代码合并数量 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=196257) |
-- 作者:zjykyy -- 发布时间:2025/4/13 8:21:00 -- 高速合并如何实现相同物料代码合并数量 高速合并多个excel文件时,如何能够将物料代码相同的行的自动合并为一行,并且数量自动累加。即确保物料代码列唯一,而总数量不变。物料代码没有重复的行正常引入即可。 |
-- 作者:zjykyy -- 发布时间:2025/4/13 8:25:00 -- 如果可以在高速合并的三个选项中增加这个功能就更好了。 |
-- 作者:有点蓝 -- 发布时间:2025/4/13 20:13:00 -- 参考: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() |
-- 作者:zjykyy -- 发布时间:2025/4/14 21:21:00 -- 通过版主的指导,已实现需求。但是又碰到另一个问题。我想用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,"商品编码","商品名称","规格","生产企业","产地","单位","通用名称","按批号开票"} 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")\'删除合计行 |
-- 作者:有点蓝 -- 发布时间:2025/4/14 22:25:00 -- 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 |