2012-07-11 39 views
0

有谁知道如何使用vba按列名将excel数据导入到sql数据库中?如何通过列名使用vba导入excel excel到数据库

例如: 我有一个excel文件,有5列:column1,column2,column3,column 4,第5列。这些列的位置随机生成我只想导入3列的数据:column1,column3, column5到SQL数据库使用vba

我浪费了很多天搜索谷歌,但无法找出解决方案。任何人都请帮我解决这个紧急问题。

谢谢!

回答

0

您可以使用ADO连接。

您可以打开到目标服务器的连接,循环数据,然后将其插入目标数据库。这可以让你开始: http://www.vbexplorer.com/VBExplorer/vb_feature/june2000/Database_Beginner_ADO_DAO.asp

否则,根据你的目标数据库,它可能有一些专有的导入工具 - 这通常会要求你导出你的excel到它能识别的格式。

对于一个完全成熟的解决方案,可以考虑使用ETL工具

-1
Protected Sub just_Click(sender As Object, e As EventArgs) Handles just.Click 


Dim cnn As SqlConnection 

Dim sql As String 

Dim i, j As Integer 

Dim xlApp As Excel.Application 

Dim xlWorkBook As Excel.Workbook 

Dim xlWorkSheet As Excel.Worksheet 

Dim misValue As Object = System.Reflection.Missing.Value 

xlApp = New Excel.ApplicationClass 

xlWorkBook = xlApp.Workbooks.Add(misValue) 

xlWorkSheet = xlWorkBook.Sheets("sheet1") 

cnn = New SqlConnection("***your connection string***") 

cnn.Open() 

sql = "SELECT * FROM exceltable" 

Dim dscmd As New SqlDataAdapter(sql, cnn) 

Dim ds As New DataSet 

dscmd.Fill(ds) 

For j = 0 To ds.Tables(0).Columns.Count - 1 

xlWorkSheet.Cells(i + 1, j + 1) = _ 

ds.Tables(0).Columns(j).ColumnName 

Next 

For i = 0 To ds.Tables(0).Rows.Count - 1 


For j = 0 To ds.Tables(0).Columns.Count - 1 

xlWorkSheet.Cells(i + 2, j + 1) = _ 

ds.Tables(0).Rows(i).Item(j) 


Next 

Next 

xlWorkSheet.SaveAs("D:\pappy.xlsx") 

xlWorkBook.Close() 

xlApp.Quit() 

cnn.Close() 

End Sub 
+0

请格式化你的代码,以便它的可读性。另外,对于那些发现这种情况的人来说,代码的一些解释不会受到伤害。 – thomasb 2015-06-01 09:05:37