导入excel到sql db表

时间:2009-12-05 03:43:29

标签: sql vb.net excel ado.net

我正在尝试将excel电子表格中的数据写入SQL数据库。我已经能够连接到Excel电子表格并读取数据,但我无法将数据插入到SQL DB表中。

当前代码如下

最感谢的任何帮助。

    Dim plmExcelCon As System.Data.OleDb.OleDbConnection
    Dim ldExcelDS As System.Data.DataSet
    Dim cmdLoadExcel As System.Data.OleDb.OleDbDataAdapter
    Dim PrmPathExcelFile As String
    PrmPathExcelFile = txtImportFileLocation.Text.ToString

    plmExcelCon = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PrmPathExcelFile + ";Extended Properties=Excel 12.0;")
    cmdLoadExcel = New System.Data.OleDb.OleDbDataAdapter("select * from [" + txtImportSheetName.Text + "$]", plmExcelCon)
    ldExcelDS = New System.Data.DataSet
    cmdLoadExcel.Fill(ldExcelDS)

    dgvImportData.DataSource = ldExcelDS.Tables(0)

    plmExcelCon.Close()


   cmdINSERT.Parameters("@[SQL COLUMN NAME]").Value = [Not sure how to set value from datagrid view]


  cnLD.Open()
  cmdINSERT.ExecuteNonQuery()
  cnLD.Close()

3 个答案:

答案 0 :(得分:1)

我的任务是从Excel中提取一些数据,修改它,并将其放入SQL数据库中。以下是与我的相似之处:

    Dim MyConnection As New System.Data.OleDb.OleDbConnection

    Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    MyConnection = New System.Data.OleDb.OleDbConnection ("provider=Microsoft.Jet.OLEDB.4.0; data source='" + fileLocation + " ';Extended Properties=Excel 8.0;")

    ' Select the data from the 'Samples' sheet of the workbook.
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Samples$]", MyConnection)
    Dim ds as new DataSet
    MyCommand.Fill(ds)

    MyConnection.Close()

这几乎就是你已经拥有的,你说它可以从Excel中提取数据。从那里我将遍历DataSet并以这种方式将其添加到数据库:

    Dim dt as DataTable = ds.Tables(0)
    For each row as DataRow in dt.Rows
        dim value1 as String = row("columnName")
        dim value2 as Double = row("columnName2")

        'Write a function that connects to the database with your parameters
        insertIntoDatabase(value1, value2)
    Next

希望这是您需要的桥梁(访问DataTable的数据)。祝你好运!

答案 1 :(得分:0)

我不确定您的代码是否能够正常工作。但我认为有更好的方法来解决这个问题。

当我做了这样的事情时,我使用了ACCESS作为数据容器 - 可以将ACCESS链接到EXCEL数据和ODBC源。如果您已在ACCESS中创建了所需的链接,那么运行INSERT INTO SQL查询是一件简单的事情

但我认为你可以在没有ACCESS的情况下这样做 - 因为你可以让VBA认为EXCEL是一个ODBC源 - 所以你可以直接从VBA建立所有连接。

微软支持网站上有文档解释了语法和方法。

答案 2 :(得分:0)

我终于让它使用以下代码

    Dim plmExcelCon As New System.Data.OleDb.OleDbConnection
    Dim cmdLoadExcel As System.Data.OleDb.OleDbDataAdapter
    Dim PrmPathExcelFile As String

    PrmPathExcelFile = txtImportFileLocation.Text.ToString

    plmExcelCon = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PrmPathExcelFile + ";Extended Properties=Excel 12.0;")

    cmdLoadExcel = New System.Data.OleDb.OleDbDataAdapter("select * from [" + txtImportSheetName.Text + "$]", plmExcelCon)

    Dim dt As System.Data.DataTable

    dt = New System.Data.DataTable

    cmdLoadExcel.Fill(dt)

    plmExcelCon.Close()

    For Each row As DataRow In dt.Rows
        Dim impEID As String = row(txtImportEID.Text)
        Dim impVID As String = row(txtImportVID.Text)

    Try

            cmdINSERT.Parameters("@pldLifeDataEID").Value = impEID
            cmdINSERT.Parameters("@pldLifeDataVID").Value = impVID
            cmdINSERT.Parameters("@pldLifeDataDateEntry").Value = Date.Now

            cnLD.Open()
            cmdINSERT.ExecuteNonQuery()
            cnLD.Close()

        Catch ex As Exception
            MessageBox.Show(ErrorToString)
        End Try
    Next

感谢您的所有帮助