vb菜鸟,遇到以下问题:
我想用vb读取一个Excel,先判断其中是否存在必需列。
Excel中第一行是一些数据,第二行才是标题列。
如:第一行为费用3000。
    第二行为NO,代码,数量...等标题。
    第三行往下是一些数据。我现在是想判断该Excel中是否含有“NO,代码,数量”...等标题列。原来标题列在第一行的时候是这样写的:    With rs
     .CursorLocation = adUseClient
     .CursorType = adOpenKeyset
     Set .ActiveConnection = cn
         .Open "select top 1 * from [" & strSheetName & "$]"
     End With    If Not CheckColumnName(rs, sColumnName, strErrorInfo) Then
        Screen.MousePointer = vbDefault
         SysMsgbox strErrorInfo, 0, 1
         Exit Function
     End If'strColumnName=“No,代码,数量”...Public Function CheckColumnName(ByVal rsHead As Recordset, ByVal strColumnName As String, ByRef strErrorInfo As String) As Boolean
    Dim i, ii As Long
    Dim blnFind As Boolean
    Dim strColumnNameList() As String
    Dim strENTRYColumnName() As String
    
    CheckColumnName = True
    
    strColumnNameList = Split(strColumnName, ",")
    
    For ii = 0 To UBound(strColumnNameList)
        For i = 0 To rsHead.Fields.Count - 1
            If rsHead.Fields(i).Name = strColumnNameList(ii) Then
                blnFind = True
                Exit For
            End If
        Next i
        If Not blnFind Then
            strErrorInfo = strErrorInfo & vbCrLf & "字段:'" & strColumnNameList(ii) & "'不存在,请检查接口文件!请确定字段名中是否存在空格。"
            CheckColumnName = False
        End If
        blnFind = False
    Next ii
    
End Function'现在使用以上代码,rsHead.Fields(i).Name 这个只能取到第一行的列名。
请高手指点,多谢!!

解决方案 »

  1.   

    用数据库方式访问EXCEL的话, 很容易疯掉, 因为一来EXCEL会自作主张做数据转换,即使强制格式也不行.
    二来如果是手工输入的数据的话,经常会遇到空格回车换行键的困扰,更不说还有输入错误之类的问题.
    所以"读"EXCEL的话,我建议还是老老实实用EXCEL方式一格一格读出来.
    而用数据库方式"写"EXCEL的话就相对问题少了很多, 唯一遇到的问题就是如果有个比较大的数字写入EXCEL,比如手机号什么的,它也会将它转换成科学记数法,反正是让人哭笑不得. 当然解决的方法就是将此类数据后面加个空格什么的, 使得EXCEL认为是字符串而不转换
      

  2.   

    用数据库的方式读取,好像第一行必须是标题。
    可以用直接读取excel方式:网上很多介绍,不重复
    sheet.cells(2,1)   来读取单元格
      

  3.   

    不仅是第一行,第N行都行
      With rs
      .CursorLocation = adUseClient
      .CursorType = adOpenKeyset
      Set .ActiveConnection = cn
      .Open "select top 1 * from [" & strSheetName & "$2:1000]"
      End With
    这几个红字绝对值100分,楼主赶紧结贴吧
      

  4.   

    With rs
      .CursorLocation = adUseClient
      .CursorType = adOpenKeyset
      Set .ActiveConnection = cn
      .Open "select top 2 * from [" & strSheetName & "$]"
      .movelast
    End With
    .
    .
    .