将每月数据从 Excel 上传到 Access
Posted
技术标签:
【中文标题】将每月数据从 Excel 上传到 Access【英文标题】:Uploading monthly data into Access from Excel 【发布时间】:2013-08-17 12:56:01 【问题描述】:我有一个 Access 数据库,它需要从 Excel 电子表格中获取每月更新。 电子表格具有与数据库表不匹配的有意义的列标题。 另外,我需要检查数据是要合并还是追加。 所以我想从电子表格中获取一个数据集,我可以循环并让我的代码决定如何处理数据。 我可以在 Access 中创建一个与电子表格结构完全匹配的临时表,使用 DoCmd.TransferSpreadsheet acImport 填充它,执行我的操作,然后将其删除。
这是最简单的方法,还是我可以这样做:
strQuery = "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" _
& Chr(34) & fromFile & Chr(34) & "].[sheet1]"
Set rs = CurrentDb.OpenRecordset(strQuery)
此代码产生错误:无法更新。数据库或对象是只读的
【问题讨论】:
【参考方案1】:我认为最好在 access 中创建新表 然后首先将所有excel数据复制到该表 那么一切都会更好更快地工作
宜兰
【讨论】:
【参考方案2】:我认为您需要使用 ADO,而不是 DOA 记录集。 ADO 要求您添加一个引用(除非您使用后期绑定)。 ADO 的某些属性和方法与 DAO 不同,比如 ADO 中没有 .Edit 方法。
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Scripts\Test.xls;" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
objRecordset.Open "Select * FROM [Sheet1$]", _
objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("Name"), _
objRecordset.Fields.Item("Number")
objRecordset.MoveNext
Loop
这是从 MS 的 technet 站点获取的,您可以在其中获取更多详细信息: http://technet.microsoft.com/en-us/library/ee692882.aspx
【讨论】:
以上是关于将每月数据从 Excel 上传到 Access的主要内容,如果未能解决你的问题,请参考以下文章