总的来说,我本意是希望将许多本地硬盘的EXCEL里面的第一个表(仅有一个表)导入到SQL2000里面去。
但是首先碰到一个其它问题:
贴一段代码先:
Private Sub Cmd_import_Click()
Dim cnExcel As New ADODB.Connection
Dim rsExcel As New ADODB.RecordsetDim path As String
CommonDialog1.Action = 1
path = CommonDialog1.FileNameSet cnExcel = New ADODB.Connection
cnExcel.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source='" + path + "';Extended Properties='Excel 8.0;HDR=Yes'"
cnExcel.CursorLocation = adUseClient
cnExcel.OpenSet rsExcel = New ADODB.Recordset
If rsExcel.State = adStateOpen Then rsExcel.Close
rsExcel.Open "select * from [sheet1$]", cnExcel, adOpenDynamic, adLockOptimistic
Set Grid1.DataSource = rsExcel
End Sub这段代码完成一个功能:用户单击“导入”按钮的时候,弹出“打开”对话框,选择一个EXCEL文件,然后用rsExcel记下所有sheet1的记录,并让它显示在Grid1控件上。Grid1是一个MSHFlexGrid。现在才到这一步就出问题了:显示在Grid1上的数据相对于原EXCEL表数据,出现了丢失的情况。丢的全部是纯数字的单元格。
例如:excel里面是
AA    BB    CC
123   abc   12a
bcd   345   ab3
那么到了Grid1里面123和345的那两个单元格就变成空的了。
别人说出现这个的原因是因为控件会根据EXCEL的第一行来决定格式,因为第一行的是字符型,所以它下面的都必须是字符型,不然就丢了。怎么会这样??该怎么解决呀?谢谢大家先。

解决方案 »

  1.   

    兄弟,强制转换是什么意思?先在EXCEL里面转还是在VB里面转啊?
    在EXCEL里面他们都是text类型呢
    我不知道如何在VB里面转啊
      

  2.   

          Dim rs As ADODB.Recordset
          Set rs = New ADODB.Recordset
          Dim sconn As String      rs.CursorLocation = adUseClient
          rs.CursorType = adOpenKeyset
          rs.LockType = adLockBatchOptimistic      sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile
          rs.Open "SELECT * FROM [sheet1$]", sconn