vb将excel导入数据库

有很多excel2003的数据表放,想把它们导入到access2003数据库里,要求以excel的文件名作为数据库每个表的名字,数据库表的格式和excel一样,其实就是把数换个地方,其他的都不改,呵呵。怎么实现,给代码吧!谢谢!!可以实现的追加50分!

没错,Access自带导入外部数据的功能,可以直接导入Excel,不过如果你实在想了解一下用VB怎么做的话,可以参考下面是我搞过的自用的读取Excel导入数据库的代码。必须建立了数据库,以及数据表和相应字段才行,要自动创建数据表我不会。总之,这下面是导入数据的过程,希望能对你有所帮助。

数据库DataBase.mdb ,表名data
Excel文件名test.xls ,目标工作表sheet1

Private Sub Command1_Click()
'工程->引用->Microsoft ActiveX Data Objects 2.X Library
On Error Resume Next
Dim i%, n%, l%
Dim Conn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Cnt As Integer
Dim xConn As New ADODB.Connection
Dim xRs As New ADODB.Recordset
Dim xCnt As Integer

Conn.CursorLocation = adUseClient
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\DataBase.mdb"
If Rs.State <> adStateClosed Then Rs.Close
Rs.Open "select * from data", Conn, adOpenKeyset, adLockOptimistic

xConn.CursorLocation = adUseClient
'连接Excel的字符串,后面的“HDR=yes”需要注意,它的意思是把Excel表第一行作为字段名,第二行开始方是有效数据。HDR=no则反之,从第一行开始就看做有效数据。
xConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.xls;Extended Properties='Excel 8.0;HDR=yes;IMEX=1'"
If xRs.State <> adStateClosed Then xRs.Close
'像打开数据库一样,使用SQL语言,打开名称为“sheet1”的工作表
xRs.Open "select * from [sheet1$]", xConn, adOpenStatic, adLockReadOnly
xCnt = xRs.RecordCount

If xCnt = 1 Then '因为HDR=yes,必有1行表头数据
MsgBox "请确认“test.xls”的“sheet1”工作簿内容不为空!否则无法导入任何数据!"
Exit Sub
End If
ProgressBar1.Max = xCnt
ProgressBar1.Min = 0
ProgressBar1.Value = 0
Label1.Caption = "0 / " & xCnt

For i = 0 To xCnt - 1
DoEvents
'下面的SQL插入语句自行更改,注意数据格式,如果是xRs("字段名1")的值是文本,记得在两边加单引号。
Conn.Execute "insert into data values(" & xRs("列名1") & "," & xRs("列名2") & "," & xRs("列名3") & ...... & ")"
xRs.MoveNext
Label1.Caption = i + 1 & " / " & xCnt
ProgressBar1.Value = i + 1
Next

Rs.Close : xRs.Close
Conn.Close : xConn.Close
Set Rs = Nothing : Set xRs = Nothing
Set Conn = Nothing : Set xConn = Nothing
End Sub
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-20
给你几段代码参考下,自己写出来应该没什么问题,程序自己写才有意思
一段是创建数据库和数据表的代码,令一段是读取数据库access记录到Excel表的,和你的要求正好相反,都是用ADO实现,自己改吧
Public Sub TEST1()
Dim myDb As DAO.Database
Dim myTbl As DAO.TableDef
Dim myData As String
Dim myTable As String
myData = ThisWorkbook.Path & "\学生成绩管理.mdb"
myTable = "期末成绩"
On Error Resume Next
Kill myData
On Error GoTo 0
Set myDb = CreateDatabase(myData, dbLangChineseSimplified)
Set myTbl = myDb.CreateTableDef(myTable)
With myTbl
.Fields.Append .CreateField("学号", dbText, 10)
.Fields.Append .CreateField("姓名", dbText, 6)
.Fields.Append .CreateField("性别", dbText, 1)
.Fields.Append .CreateField("班级", dbText, 10)
.Fields.Append .CreateField("数学", dbSingle)
.Fields.Append .CreateField("语文", dbSingle)
.Fields.Append .CreateField("物理", dbSingle)
.Fields.Append .CreateField("化学", dbSingle)
.Fields.Append .CreateField("英语", dbSingle)
.Fields.Append .CreateField("总分", dbSingle)
End With
myDb.TableDefs.Append myTbl
myDb.Close
Set myDb = Nothing
Set myTbl = Nothing
MsgBox "创建数据库成功!" & vbCrLf _
& "数据库文件名为:" & myData & vbCrLf _
& "数据表名称为:" & myTable & vbCrLf _
& "保存位置:" & ThisWorkbook.Path, _
vbOKOnly + vbInformation, "创建数据库"
End Sub

Public Sub TEST2()
Dim myData As String, myTable As String, SQL As String
Dim myDb As DAO.Database
Dim myRs As DAO.Recordset
Dim i As Integer
ActiveSheet.Cells.Clear
myData = ThisWorkbook.Path & "\职工管理.mdb"
myTable = "职工基本信息"
Set myDb = OpenDatabase(myData)
SQL = "select * from " & myTable & " order by 职工编号"
Set myRs = myDb.OpenRecordset(SQL)
MsgBox "数据库中的记录数为:" & myRs.RecordCount
If myRs.RecordCount > 0 Then
For i = 1 To myRs.Fields.Count
Cells(1, i) = myRs.Fields(i - 1).Name
Next i
With Range(Cells(1, 1), Cells(1, myRs.Fields.Count))
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
Range("A2").CopyFromRecordset myRs
ActiveSheet.Cells.Font.Size = 10
ActiveSheet.Columns.AutoFit
End If
myRs.Close
myDb.Close
Set myRs = Nothing
Set myDb = Nothing
End Sub
第2个回答  2019-01-11
在数据库中将数字所在的列现由文本转换为数字就能用了。
第3个回答  2019-09-29
用VB引用Excel、一行一行读、拼成SQL的Insert语句、
然后用ADO连接运行Insert语句。
通过这个方法可以100%正确插入。
你在Excel里设置成文本型是完全没用的。
把Excel设置为数据源一次性读入Recordset的方法非常有问题、
这种方法是读取前面N行判断该列的类型的、所以你在Excel里设置为文本或日期完全不会有任何作用。
第4个回答  2008-12-18
在 ACCESS里可以直接导入
文件-获取外部数据-导入 选EXCEL文件

用VB做怎么将Excel数据导入SQL数据库中?
法一:可以试着用VB书写一段调用SQL Server数据库DTS的代码,然后就可以像直接使用DTS进行数据导入一样就行Excel与SQL Server数据之间的迁移了。方法二:可以用VB来 作EXCEL,然后一条数据一条数据的 入到数据库中,这种方法不 使用,因为VB 作EXCEL是非常慢的,如果数据量太大,很有可能会造成宕机。

怎么在VB中调用excel的数据库?
1、点击Excel界面左下角的录制宏按钮录制宏。2、在【宏名】处输入一个有意义的名称,帮助以后识别该宏的功能。本例按照默认名称命名。选择将宏录制在【个人宏工作簿】并点击【确定】按钮。3、马上点击Excel界面左下角的停止录制宏按钮停止宏的录制。4、按Alt+F11打开VBE界面,如下图。5、在代码部分...

VB读取EXCEL文件的内容并将其存入数据库,如果遇到空行就停止读取和存...
1,首先你得建一个access数据库,名称为:TEST01,建一个数据表:表名为:TEST02,表中有三个TEXT型字段.然后在excel表中A,B,C三列输入相一些数据.2.在表格中建一个commandbutton把以下CommandButton1代码复制进去.3,把后面的定义和connect,disconnect放到模块里面.4,点击按钮,就会把A,B,C三列的的内容...

用VB做怎么将Excel数据导入SQL数据库中
fileadd = CommonDialog1.FileName If fileadd = "" Then Exit Sub Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象 Set xlBook = xlApp.Workbooks.Open(fileadd) '打开已经存在的EXCEL工件簿文件 xlApp.Visible = False ' = True '设置EXCEL对象可见(或不可见)Set xlSheet ...

vb如何读取excel数据并存入数组?
读写EXCEL表: \\x0d\\x0a1、在工程中引用Microsoft Excel类型库: \\x0d\\x0a\\x0d\\x0a从"工程"菜单中选择"引用"栏;选择Microsoft Excel 12.0 Object Library(EXCEL2007),然后选择"确定"。表示在工程中要引用EXCEL类型库。 \\x0d\\x0a\\x0d\\x0a2、在通用对象的声明过程中定义EXCEL对象: ...

怎样实现用vb导入excel表格
首先,在VB中添加对Excel对象库的引用。然后,通过创建Excel应用程序对象(Application)实例来打开Excel文件。接着,获取工作簿(Workbook)和工作表(Worksheet)对象,从而访问Excel中的数据。使用合适的函数(例如Range或Cells)来读取工作表中的数据,并将其导入到VB的本地数据结构中。此外,可以使用循环...

VB 把多个Excel表批量导入access数据库怎样做?
文件流呗,先把Excel文件都获取(.net的库中有相关函数),然后循环处理(一个Excel文件一个的处理),循环中的处理如下:把Excel中的数据读取保存在datatable中,然后插入到assess数据库。

vb怎么批量将excel文件导入到access(mdb)的表中?
我知道两个方法。1、如果EXCEL数据不多可以用这个方法。workbooks.open(“路径")打开EXCEL,再逐个的用INSERT语句导入到ACCESS里面。2、就是EXCEL本身也是一个数据库,第一行是字段,用连接数据库的方式连接EXCEL直接一条SQL导入到SQL。这对格式有点要求,就是第一行必须是字段,数据比较整齐。

vb adodc连接excel做数据库
我们可以整个.xsl文件看作是一个数据库,sheet1、sheet2等分别看成一个独立的表,把A1、B1、C1、…N1看作表的字段。--建立连接对象实例ExeclConn Set ExeclConn=Server.CreateObject(“ADODB.Connection”)--利用Open 方法打开数据库 StrConn="Driver={Microsoft Excel Driver (*.xls)};"&_"Driver...

VB如何把EXCEL表当成要操作的数据库
cnExcel.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" C:\\Documents and Settings\\f2908233\\桌面\\新资料夹 (2)\\cu.xls;Extended Properties='Excel 8.0;HDR=Yes'"strSql = "select * from [toolbase$] "If rsExcel.State = adStateOpen Then rsExcel....

相似回答