以文本方式查看主题

-  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=43736)

--  作者:有点甜
--  发布时间:2013/12/13 20:08:00
--  
 请上传完整例子。
--  作者:有点甜
--  发布时间:2013/12/13 21:08:00
--  
 看不懂你给的例子,详细说明一下怎么做吧。

 excel表,有两个规格,两个价格,是什么意思?

 你说的匹配是什么跟什么比较?

 具体举例一行数据,经过什么,最后效果是什么。

--  作者:有点甜
--  发布时间:2013/12/13 21:49:00
--  
 是把 品名 和 综合类 比较;品名2 和 专业类比较,然后引入 规格和价格 吗?
--  作者:有点甜
--  发布时间:2013/12/13 22:40:00
--  
 如下代码,直接执行便可

Dim dlg As new OpenFileDialog
dlg.Filter = "Excel文件|*.xls"
If dlg.ShowDialog = DialogResult.OK Then
    Dim book As New XLS.Book(dlg.FileName)
    Dim sheet As XLS.Sheet = book.Sheets(0)
    Dim dt As DataTable = DataTables("表A")
    Dim dt_log As DataTable = DataTables("表B")
    dt_log.DataRows.Clear
    For i As Integer = 3 To Sheet.Rows.Count -1
        Dim xval1 As String = sheet(i, 1).Text
        Dim xval2 As String = sheet(i, 5).text
        Dim fdr As DataRow = dt.Find("品名 = \'" & xval1 & "\'")
        If fdr IsNot Nothing Then
            fdr("规格") = sheet(i, 2).Text
            fdr("价格") = sheet(i, 3).Text
        Else
            fdr = dt_log.Find("第二列 Is null")
            If fdr Is Nothing Then
                fdr = dt_log.AddNew
            End If
            fdr("第二列") = xval1
        End If
        fdr = dt.Find("品名2 = \'" & xval2 & "\'")
        If fdr IsNot Nothing Then
            fdr("规格2") = sheet(i, 6).Text
            fdr("价格2") = sheet(i, 7).Text
        Else
            fdr = dt_log.Find("第四列 is null")
            If fdr Is Nothing Then
                fdr = dt_log.AddNew
            End If
            fdr("第四列") = xval2
        End If
    Next
    For Each dr As DataRow In dt.Select("规格 is null")
        Dim fdr As DataRow = dt_log.Find("第一列 is null")
        If fdr Is Nothing Then
            fdr = dt_log.AddNew
        End If
        fdr("第一列") = dr("品名")
    Next
    For Each dr As DataRow In dt.Select("规格2 is null")
        Dim fdr As DataRow = dt_log.Find("第三列 is null")
        If fdr Is Nothing Then
            fdr = dt_log.AddNew
        End If
        fdr("第三列") = dr("品名2")
    Next
    MainTable = Tables("表B")
End If

--  作者:有点甜
--  发布时间:2013/12/14 22:48:00
--  
 你做一个窗口,绑定表B,弄完以后打开窗口不就行了?

 1、不知道表结构?不知道表头无法做。至少要知道表头,才能确定是第几列和从第几行开始。如果你能总结出规律也可以。

 2、上面说了。

 3、手工选择品名匹配?是说,张三可以匹配李四,导入李四的数据?如果这样,你单独做一张匹配表,说明哪个匹配哪个。