Foxtable(狐表)用户栏目专家坐堂 → 请教一个问题


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

主题:请教一个问题

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/19 14:23:00 [显示全部帖子]

如果是excel,要用vba读写导入的方式,这样才能坚持数据类型是否匹配,如果速度要快就用二维数组,如

 

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=65686&skin=0


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/19 15:33:00 [显示全部帖子]

那就判断一下,再处理。比如

 

If 单元格.Value = "" Then

    Tables("临时表").AddNew

Else

    Tables("正常表").AddNew

End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/19 16:18:00 [显示全部帖子]

先判断,再赋值。如果不满足的,就添加到临时表。很简单的逻辑啊。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/19 16:42:00 [显示全部帖子]

呃,你把所有的可能,都列出来不就行了?

 

If 某单元格.Value = "" Then

 

End If

 

If 某单元格.Value.Length <> 18 Then

 

End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/19 17:06:00 [显示全部帖子]

测试能否转换呗

 

http://www.foxtable.com/help/topics/0324.htm

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/19 18:10:00 [显示全部帖子]

在这个位置处理

 

For n As Integer = 2 To ws.UsedRange.Rows.Count -1
    Dim r As Row
    Dim msg As String = ""
    For  m As  Integer = 0 To nms.Length - 1
        If Tables("配载订单").Cols(nms(m)).IsDate Then
            Dim d As Date
            If Date.TryParse(ary(n,m+1), d) = False Then '如果不能转成日期,肯定是不能导入的
                msg &= "【" & ary(n,m+1) & "】不能转成日期" & vbcrlf
            End If
            If Tables("配载订单").Cols(nms(m)).IsNumeric Then
                Dim d As Double
                If Double.TryParse(ary(n,m+1), d) = False Then '如果不能转成日期,肯定是不能导入的
                    msg &= "【" & ary(n,m+1) & "】不能转成数值" & vbcrlf
                End If
            End If
        Next
        If msg > "" Then
            msgbox(msg)
            r = Tables("临时表").addnew
        Else
            Tables("配载订单").addnew
        End If
       
        For  m As  Integer = 0 To nms.Length - 1
            r(nms(m)) = ary(n,m+1)
        End If
    Next
Next

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/20 10:54:00 [显示全部帖子]

Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
    Dim App As New MSExcel.Application
    try
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("总计划表")
        Dim Rg As MSExcel.Range = Ws.UsedRange
        Dim ary = rg.value
       
        Tables("配载订单").ResumeRedraw()
        Tables("配载订单").StopRedraw()
        Dim nms() As  String = {"项目","下单日期","MK号","DO号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期"}
       
        For n As Integer = 2 To ws.UsedRange.Rows.Count -1
            Dim r As Row
            Dim msg As String = ""
            For  m As  Integer = 0 To nms.Length - 1
                If Tables("配载订单").Cols(nms(m)).IsDate Then
                    Dim d As Date
                    If Date.TryParse(ary(n,m+1), d) = False Then '如果不能转成日期,肯定是不能导入的
                        msg &= "【" & ary(n,m+1) & "】不能转成日期" & vbcrlf
                    End If
                End If
                If Tables("配载订单").Cols(nms(m)).IsNumeric Then
                    Dim d As Double
                    If Double.TryParse(ary(n,m+1), d) = False Then '如果不能转成日期,肯定是不能导入的
                        msg &= "【" & ary(n,m+1) & "】不能转成数值" & vbcrlf
                    End If
                End If
            Next
            If msg > "" Then
                msgbox(msg)
                r = Tables("临时表").addnew
            Else
                Tables("配载订单").addnew
            End If
           
            For  m As  Integer = 0 To nms.Length - 1
                r(nms(m)) = ary(n,m+1)
            Next
        Next
        Tables("配载订单").ResumeRedraw()
       
    catch ex As exception
        msgbox(ex.message)
        app.quit
    End try
End If


 


 回到顶部