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 这个只能取到第一行的列名。
请高手指点,多谢!!
我想用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 这个只能取到第一行的列名。
请高手指点,多谢!!
二来如果是手工输入的数据的话,经常会遇到空格回车换行键的困扰,更不说还有输入错误之类的问题.
所以"读"EXCEL的话,我建议还是老老实实用EXCEL方式一格一格读出来.
而用数据库方式"写"EXCEL的话就相对问题少了很多, 唯一遇到的问题就是如果有个比较大的数字写入EXCEL,比如手机号什么的,它也会将它转换成科学记数法,反正是让人哭笑不得. 当然解决的方法就是将此类数据后面加个空格什么的, 使得EXCEL认为是字符串而不转换
可以用直接读取excel方式:网上很多介绍,不重复
sheet.cells(2,1) 来读取单元格
With rs
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
Set .ActiveConnection = cn
.Open "select top 1 * from [" & strSheetName & "$2:1000]"
End With
这几个红字绝对值100分,楼主赶紧结贴吧
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
Set .ActiveConnection = cn
.Open "select top 2 * from [" & strSheetName & "$]"
.movelast
End With
.
.
.