以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  导入excel  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99389)

--  作者:huhu
--  发布时间:2017/4/18 16:18:00
--  导入excel
 Dim tsxx As WinForm.Label = e.Form.Controls("Label42")
    tsxx.text = "正在导入******,请耐心等待!"
    Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("D:\\销售出库单列表.xls")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Tables("销售出库单列表").StopRedraw()
    \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
    Dim ra = ws.UsedRange
    Dim nms() As String = {"制单人","仓库编码","仓库","销售订单号","发货单号","出库日期","出库单号","出库类别","销售部门","业务员","客户名称","备注","存货编码","存货名称","主计量单位","数量","货运单号","发货地址"}
    \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
    For n As Integer = 2 To ra.Rows.Count
        Dim ckdh As String = ws.cells(n,8).Text
        Dim chbm As String = ws.cells(n,14).text
        If DataTables("销售出库单列表").SQLFind("出库单号 = \'" & ckdh & "\' and 存货编码 = \'" & chbm & "\'") Is Nothing Then \'如果不存在同编号的计划表
            Dim r As Row = Tables("销售出库单列表").AddNew()
            For m As Integer = 0 To nms.Length - 1
                r(nms(m)) = ws.cells(n,m+1).Value
                r("导入日期") = Date.Today
                r.save
            Next
        End If
    Next

假如,excel有2行完全相同的数据,希望第一次都能导入,下次再导入的时候跳过去。这个条件判断怎么写?

--  作者:huhu
--  发布时间:2017/4/18 16:58:00
--  
帖子可不能沉啊。在线等。
--  作者:有点蓝
--  发布时间:2017/4/18 17:39:00
--  
红色代码就是判断的。看看Excel数据是否有空格或者回车等字符
--  作者:huhu
--  发布时间:2017/4/18 17:56:00
--  
可不是这个意思哦。
比如我有10行完全一样的数据,如果按照红色代码,那么只能导入第一行,剩下的9行都导不进去。
但我的需求是,第一次是把这10行完全一样的数据都导进去。但后期不论导几次,excel里面的这10行都不能导入,要直接跳过。
是这个意思

--  作者:有点蓝
--  发布时间:2017/4/18 18:09:00
--  
虽然可以做到。但是非常麻烦,效率非常低。不建议做这样的功能