Foxtable(狐表)用户栏目专家坐堂 → [求助]合并EXCEL表中的数据


  共有2108人关注过本帖树形打印复制链接

主题:[求助]合并EXCEL表中的数据

帅哥哟,离线,有人找我吗?
gfj7126
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:130 积分:1141 威望:0 精华:0 注册:2013/6/9 11:20:00
[求助]合并EXCEL表中的数据  发帖心情 Post By:2016/7/6 10:53:00 [只看该作者]

求助,我在合并EXCEL表中的数据,要求是从第9行第二列开始合并数据,但其中第4列和第6列的数据不用合并,也就是说我的foxtabl的表设计中,与excel表中的列数不一样,少第4与第6列,在写代码时,不知道如何跳过第4列与第6列。

Dim dlg As new OpenFileDialog
dlg.Filter = "excel文件|*.xls;*.xlsx"
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    For Each f As String In dlg.FileNames
        Dim  Book As New XLS.Book(f)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables("表A").StopRedraw()
        Dim nms() As String = {"PO番号","INVOICE","到着予定","銘柄","SAP","数量","数量包","批号","滅菌日","有効期限"}
        For n As Integer = 8 To Sheet.Rows.Count -1
            Dim bh As String = sheet(n,8).Text
            MessageBox.Show("'"& bh &"'")
            If bh = "" Then
                DataTables("表A").LoadTop = "100"
                DataTables("表A").Load
                Tables("表A").ResumeRedraw()               
                Exit For
            Else
                Dim dr As DataRow = DataTables("表A").Find(" 批号 = '" & bh & "'")
                If dr Is Nothing Then '如果不存在同批号的订单
                    dr =  DataTables("表A").AddNew()
                End If
                For m As Integer = 0 To nms.Length - 1
                    dr(nms(m)) = Sheet(n,m).Value
                Next
            End If
        Next
        Tables("表A").ResumeRedraw()
    Next
End If

excel中的列如下

空列   PO番号    INVOICE   集装箱    到着预定    码头   銘柄   SAP    数量   数量包   批号   灭菌日    有效期限

以上合并时,集装箱列和码头列不要合并。

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/6 10:59:00 [只看该作者]

Dim dlg As new OpenFileDialog
dlg.Filter = "excel文件|*.xls;*.xlsx"
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    For Each f As String In dlg.FileNames
        Dim  Book As New XLS.Book(f)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables("表A").StopRedraw()
        Dim nms() As String = {"PO番号","INVOICE","到着予定","","SAP","","数量包","批号","滅菌日","有効期限"}
        For n As Integer = 8 To Sheet.Rows.Count -1
            Dim bh As String = sheet(n,8).Text
            MessageBox.Show("'"& bh &"'")
            If bh = "" Then
                DataTables("表A").LoadTop = "100"
                DataTables("表A").Load
                Tables("表A").ResumeRedraw()
                Exit For
            Else
                Dim dr As DataRow = DataTables("表A").Find(" 批号 = '" & bh & "'")
                If dr Is Nothing Then '如果不存在同批号的订单
                    dr =  DataTables("表A").AddNew()
                End If
                For m As Integer = 0 To nms.Length - 1
                    If nms(m) > "" Then
                        dr(nms(m)) = Sheet(n,m).Value
                    End If
                Next
            End If
        Next
        Tables("表A").ResumeRedraw()
    Next
End If

 回到顶部
帅哥哟,离线,有人找我吗?
gfj7126
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:130 积分:1141 威望:0 精华:0 注册:2013/6/9 11:20:00
  发帖心情 Post By:2016/7/6 15:21:00 [只看该作者]

问题解决,谢谢!

另外,如果要加载未锁定的记录,如何设置?

datatables("表A").LOADFILTER = " ? "

DATATABLES("表A").LOAD

?处如何设条件


 回到顶部
帅哥哟,离线,有人找我吗?
gfj7126
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:130 积分:1141 威望:0 精华:0 注册:2013/6/9 11:20:00
  发帖心情 Post By:2016/7/6 15:25:00 [只看该作者]

问题解决了。

[_locked] = false

这里的中括号不能少。


 回到顶部
帅哥哟,离线,有人找我吗?
gfj7126
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:130 积分:1141 威望:0 精华:0 注册:2013/6/9 11:20:00
  发帖心情 Post By:2016/7/6 17:21:00 [只看该作者]

继续追问:

      如果现在“表C”与“表A”通过"PO番号"与"INVOICE"关联,“表C"为父表,我上面的代码把EXCEL表中的数据合并到了”表A“中,如何实现在合并过程中如果发现某条记录在”表C"中不存在父表记录,则自动在“表C”中新增父表记录。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/6 23:57:00 [只看该作者]

Else
    Dim dr As DataRow = DataTables("表A").Find(" 批号 = '" & bh & "'")
    If dr Is Nothing Then '如果不存在同批号的订单
        dr =  DataTables("表A").AddNew()
    End If
    For m As Integer = 0 To nms.Length - 1
        If nms(m) > "" Then
            dr(nms(m)) = Sheet(n,m).Value
        End If
    Next
   
    dr = DataTables("表C").Find("PO番号 = '" & sheet(n,0).Text & "' and INVOICE = '" & sheet(n,1).Text & "'")
    If dr Is Nothing Then '如果不存在同批号的订单
        dr =  DataTables("表c").AddNew()
    End If
    dr("PO番号") = sheet(n,0).Text
    dr("INVOICE") = sheet(n,1).Text

End If

 回到顶部