Excle文件在VB中读取数据的时候就是类似于一个二维表或二维阵列来读的,你知道是那个单元,读出来加到相应的单元就行了.

解决方案 »

  1.   

    On Error GoTo LocalError
    Me.MousePointer = vbHourglass
    Command1.Enabled = False  '由于程序运行速度比较慢,所以先把按钮设为不可用
    Command2.Enabled = False
    Label1.Caption = "正在导入数据...."rs_EMP.Open ("select * from employee"), conn, adOpenDynamic, adLockOptimistic
    rs_Grou.Open ("select * from employeeGroup"), conn, adOpenDynamic, adLockOptimistic
    rs_Dep.Open ("select * from Department"), conn, adOpenDynamic, adLockOptimistic
    ProgressBar1.value = 5
    Set oExcel = CreateObject("Excel.Application")
    oExcel.Visible = False
    oExcel.Workbooks.Open "c:\HandReaderInterface\General Security Data Form.xls"  '打开Excel文件
    oExcel.Sheets(1).SelectFor i = 3 To oExcel.Cells.CurrentRegion.Rows.Count
        If ProgressBar1.value < 90 Then
            ProgressBar1.value = ProgressBar1.value + 0.1
        End If
        If Check_Id(CStr(oExcel.Cells(i, 2)), "Employee", "Id", 1) And (Not Check_Null(oExcel.Cells(i, 2)) = "") Then
            rs_EMP.AddNew
            rs_EMP("ID") = oExcel.Cells(i, 2)
            rs_EMP("FullName") = Left(oExcel.Cells(i, 4), Len(oExcel.Cells(i, 4)) - 3) & oExcel.Cells(i, 3)
            rs_EMP("Name") = oExcel.Cells(i, 7)
            rs_EMP("DeptId") = oExcel.Cells(i, 10)
            rs_EMP("GroupId") = oExcel.Cells(i, 9)
            rs_EMP.Update
        End If
        If Check_Id(oExcel.Cells(i, 9), "EmployeeGroup", "Id", 0) And (Not Check_Null(oExcel.Cells(i, 9)) = "") Then
            rs_Grou.AddNew
            rs_Grou("ID") = oExcel.Cells(i, 9)
            rs_Grou.Update
        End If
        If Check_Id(oExcel.Cells(i, 10), "Department", "Id", 0) And (Not Check_Null(oExcel.Cells(i, 10)) = "") Then
            rs_Dep.AddNew
            rs_Dep("Id") = oExcel.Cells(i, 10)
            rs_Dep.Update
        End If
    Next
    Me.MousePointer = vbDefault
    ProgressBar1.value = ProgressBar1.Max
    MsgBox "数据导入完成!"
    Label1.Caption = "数据导入完成!"GoTo ErrorExit
    LocalError:
    MsgBox "导入数据时出错!",, "提示"
    Label1.Caption = "数据导入失败"
    GoTo ErrorExitErrorExit:
    Command1.Enabled = True
    Command2.Enabled = True
    Set oExcel = Nothing       
    Set rs_EMP = Nothing
    End SubPrivate Sub Command2_Click()
    Unload Me
    End SubPrivate Sub Form_Load()
    Dim connstr As String
    connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\HandReaderInterface\RHand.mdb;Persist Security Info=False"
    conn.Open connstr
    ProgressBar1.value = 0
    Label1.Caption = ""
    End Sub
    Function Check_Id(value As String, tablename As String, fieldsname As String, NumOrTxt As Integer) As Boolean
    '&frac14;ì&sup2;é&Ecirc;&Ccedil;·&ntilde;&Oacute;&ETH;&Ouml;&Oslash;&cedil;&acute;&micro;&Auml;Id
    Dim LRs As New ADODB.RecordsetIf NumOrTxt = 1 Then
        LRs.Open ("select " & fieldsname & " from " & tablename & " where " & fieldsname & "=" & value), conn, adOpenDynamic, adLockOptimistic
    Else
        LRs.Open ("select " & fieldsname & " from " & tablename & " where " & fieldsname & "='" & value & "'"), conn, adOpenDynamic, adLockOptimistic
    End IfIf LRs.EOF And LRs.BOF Then
        Check_Id = True
    Else
        Check_Id = False
    End IfSet LRs = Nothing
    End Function
    Function Check_Null(value)
    '&frac14;ì&sup2;é&Ecirc;&Ccedil;·&ntilde;&Icirc;&ordf;&iquest;&Otilde;&Ouml;&micro;&raquo;ò&Otilde;&szlig;&Icirc;&ordf;&iquest;&Otilde;×&Ouml;·&ucirc;&acute;&reg;
    If IsNull(value) Then
        Check_Null = ""
    Else
        Check_Null = value
    End If
    End Function这是一个从Excel读数据然后写入数据库的.不是很成熟,湊合看看吧