导入Excel到SQL数据库表

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

目前的代码如下

任何帮助最高度赞赏。

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() 

我负责从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中拉数据。 从那里,我只是遍历数据集,并将其添加到数据库这种方式:

  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的数据)。 祝你好运!

我不确定你的代码是否可以工作。 但是我认为还有更好的办法可以解决这个问题。

当我做了这样的东西,我已经使用ACCESS作为数据容器 – 可以将ACCESS链接到EXCEL数据和ODBC源。 如果您在ACCESS中创build了所需的链接,那么运行INSERT INTO SQL查询就很简单了

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

Microsoft支持网站上有文档解释语法和方法。

我终于得到它与以下代码工作

  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 

感谢你的帮助