将每月数据从 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的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 Excel 复制到 SQL 数据库 - 不上传所有记录

如何将日期从excel上传到mysql? (使用 php)

csv从excel导入phpmyadmin缺少数据

使用汇总的每月数据在 Excel 中进行群组

从excel将数据加载到datagridview会出错

将 Excel 数据上传到 SQL Server 2005 时出错