乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何将excel里的数据批量导入ACCESS-多个excel导入access,access导入excel 是否

如何将excel里的数据批量导入ACCESS-多个excel导入access,access导入excel 是否

作者:乔山办公网日期:

返回目录:excel表格制作


B实现
此一模块共有四个参数:
1、sSheetName:要导出e69da5e6ba907a64331资料的文件名称 (Sheet name),例如 Sheet1
2、sExcelPath:要导出资料的 Excel 档案路径名称 (Workbook path),例如 C:\\book1.xls
3、sAccessTable:要导入的 Access Table 名称,例如 TestTable
4、sAccessDBPath:要导入的 Access 档案路径名称,例如 C:\\Test.mdb
在声明中加入以下:
Private Sub ExportExcelSheetToAccess(sSheetName As String, _
sExcelPath As String, sAccessTable As String, sAccessDBPath As String)
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase(sExcelPath, True, False, "Excel 5.0")
Call db.Execute("Select * into [;database=" & sAccessDBPath & "]." & _
sAccessTable & " FROM [" & sSheetName & "$]")
MsgBox "Table exported successfully.", vbInformation, "Yams"
End Sub
使用范例如下:将 C:\\book1.xls 中的 Sheet1 导入 C:\\Test.mdb 成为 TestTable
ExportExcelSheetToAccess "Sheet1", "C:\\book1.xls", "TestTable", "C:\\Test.mdb"

--------------------------------------------------------------------------------
ASP
以下代码优点,不用打开EXCEL进程,不会出现EXCEL进程无法结束而死机.缺点:可能会出现导入空格的现像.
<%
sub dataIntoSqlServer_ceritificate(strFileName,strSheetName,myConn)
'定义
dim myConnection
dim strName
dim rsXsl,rsSql
dim str_Xsl,str_Sql
dim myConn_Xsl
dim cmd
dim i,j
dim maxId
strName=strFileName
set myConnection=server.createobject("adodb.connection")
set rsXsl=Server.Createobject("ADODB.Recordset")
set rsSql=Server.CreateObject("ADODB.Recordset")
set cmd=Server.CreateObject("ADODB.Command")
cmd.ActiveConnection=myConn

myConn_Xsl="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strName & ";Extended Properties=Excel 8.0"
'myConn_Xsl="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application("ASP_Directory") & "chapter05\database\" & strName & ";Extended Properties=Excel 8.0"
'打开连接
myConnection.open myConn_Xsl
'打开表
str_Xsl="select * from ["& strSheetName &"$]"
rsXsl.open str_Xsl,myConnection,1,1
j=1
Do While not rsXsl.eof
'取出最大值
str_Sql="select Max(id) as maxId from new"
rsSql.open str_Sql,myConn,1,3
If Not rsSql.Eof Then
If not isNull(rsSql("maxId")) Then
maxId=Clng(rsSql("maxId"))+1
Else
maxId=1
End if
else
maxId=1
End if
rsSql.close'//关闭对象
'加入数据库
strqbsr=""
yssr=""
str_Sql="insert into new values("&maxId&",'"&rsXsl(1)&"','"&rsXsl(2)&"','"&rsXsl(3)&"','"&rsXsl(4)&"','"&rsXsl(5)&"','"&rsXsl(6)&"','"&rsXsl(7)&"','"&rsXsl(8)&"','"&rsXsl(9)&"','"&rsXsl(10)&"','"&rsXsl(11)&"','"&rsXsl(12)&"','"&rsXsl(13)&"','"&rsXsl(14)&"','"&rsXsl(15)&"','"&rsXsl(16)&"','"&strqbsr&"','"&yssr&"')"
cmd.CommandText=str_Sql
cmd.Execute()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
j=j+1
rsXsl.movenext
Loop
response.write "共导入<font color='red'>" & j-1 & "</font>条记录.<br/>"
response.write "<a href=javascript:history.back()>确定</a>"
set rsXsl=nothing
set rsSql=nothing
set myconnection=nothing
set cmd=nothing
end sub
file1="'"&request.form("filename2")&"'"
strtj=mid(request.form("filename2"),instrrev(file1,"\"),(instrrev(file1,".")-instrrev(file1,"\")-1))
if file1="" then
response.write "请选择您要导入的Excel表!<p></p>"
%>
<a href=javascript:history.back()>上一页</a>
<%
response.end
end if
'respons.write "'"&request.form("filename")&"'"
myconn="DRIVER={SQL SERVER};SERVER=(local);uid=sa;pwd=sa;DATABASE=qjgsj_data"
dataIntoSqlServer_ceritificate file1,""&strtj&"",myconn
%>

三种VBA:
方法一:在eccel VBA编辑器编写代码,使用FOR循环导入:
Sub 利用Excel的VBA将数据写入Access()
'定义ADODB 连接Access数据库
Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim strCon As String
Dim strFileName As String '数据库文件名
strFileName = InputBox("请输入文件路径及文件名:", "Excel传递数据至Access", "E:\ExcelTest\Staff.mdb")
'连接字符串,我这里是Access2010,所提供者参数为:Provider=Microsoft.ACE.OLEDB.12.0;
'如果此参e799bee5baa6e79fa5e98193e4b893e5b19e365数不能使用,根据自己的电脑修改这个字符串
'至于连接至的数据库名,根据自己的电脑修改,或用一个对话框或其他方式将此值传递进程序
strCon = "provider=Microsoft.jet.OLEDB.4.0;" _
& "Data Source=" & strFileName & ";"
Cnn.Open strCon
Rs.ActiveConnection = Cnn
Rs.LockType = adLockOptimistic
Rs.Open "Employee" '假设表为Employee
'定义Excel表中的数据区域以写入Access
Dim Sht As Worksheet
Dim Rn As Long
Dim Cn As Long
Set Sht = ThisWorkbook.Sheets("Sheet1")
'假设将 Sheet1 表的 2-6行的1、2、3列写入Access表
For Rn = 2 To 6
Rs.AddNew
Rs!num = Sht.Cells(Rn, 1) ’num,name,department是数据库中指定表的字段
Rs!Name = Sht.Cells(Rn, 2)
Rs!department = Sht.Cells(Rn, 3)
Rs.Update
Next Rn
MsgBox "完成!"
Rs.Close
Cnn.Close
Set Rs = Nothing
Set Cnn = Nothing
Set Sht = Nothing
End sub
将excel建立为数据源,用windows的控制面板--数据源,然后从数据源读入数据到access

1.在Access中创建对Excel工作簿的链接:在Access中选择“外部数据——导入——Excel”。

2.在“获取外部数据”对话框中选择“通过创建链接表来链接到数据源”。
必须为每个Excel工作簿重复该过程直到将它们都链接到数据库。结果如下图所示。

3.在SQL视图中开始新的查询,单击“创建——其他——查询设计”。

4.选择“查询工具-设计”中的“SQL视图”

5.在SQL视图中,为所有链接的Excel表输入Select语句,在每个Select语句间使用Union操作符,在SQL视图中输入选择查询语句。

6.运行查询后,结果将是包含从所有链接的文件中获取并合并后的数据。
只要链接的Excel文件在相同的位置,每次打开数据库时Access将自动刷新链接以获取最新数据。这意味着只需设置一次,然后在每次需要重新组合Excel文件时运行联合查询。
然而,默认情况下,UNION操作符会移除数据中的任何重复行。如果知道数据中有重复行,并且想保留它们,那么需要使用UNION ALL,以允许传递重复行。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网