从excel导入数据到访问时从外部数据库驱动程序(1)获取意外错误

时间:2012-05-02 21:20:34

标签: excel ms-access import

我有一张2010 Excel file,其中的工作表跨越34864 rows1387 columns。我正在尝试使用导入向导将其导入Access 2010,但是当我选择该工作表时,Access无响应,并在几秒钟后给我一个

  

“来自外部数据库驱动程序的错误(1)”

这是由于纸张的大小还是单元格中的某些东西阻止它工作。来自同一文件的其他工作表导入没有问题。

16 个答案:

答案 0 :(得分:12)

安装安全补丁 KB4041681 后,您可能会遇到此错误。请参阅此MSDN条目。 就我而言,将Microsoft.Jet.OLEDB.4.0提供者替换为Microsoft.ACE.OLEDB.12.0会有所帮助。

答案 1 :(得分:3)

请查看Access 2010规范:http://office.microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx

在您的情况下,它可能是列数,因此请先尝试导入少于255的列。此外,它可能是列或数据类型中的数据大小(将文本导入数字等)。

答案 2 :(得分:2)

我也遇到了这个问题,并找到了一个非常简单易用的解决方案。我注意到我的电子表格有一个自定义名称,所以我决定看看是否会导致问题。我将其更改为默认名称" Sheet1"而且,果然,它有效!!

答案 3 :(得分:2)

下载并安装Microsoft Access数据库引擎2010可再发行组件,然后修改Microsoft Excel中的数据库连接字符串以使用ACE作为提供程序。

改变(例子):

Provider=Microsoft.Jet.OLEDB.4.0

为:

Provider=Microsoft.ACE.OLEDB.12.0.

Microsoft正在制定解决方案,并将在即将发布的版本中提供更新。

答案 4 :(得分:2)

使用此

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")

而不是

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")

答案 5 :(得分:1)

将Excel工作表保存为“逗号分隔”.CSV文件,然后将其上载为文本文件。对我来说,这很好。

问题在于.xls(x)存在所有类型的布局问题。将其转换为.CSV将删除所有与布局相关的标记,并将其转换为“原始”数据。

一切都很好!

答案 6 :(得分:1)

按照RHiggins的说法回答:

在我的情况下,Jet OleDb.4.0抛出了此错误(oledbconnection.open()),因为工作簿(.xls)中的工作表名称太长。

答案 7 :(得分:0)

在我的情况下,电子表格已链接到另一个电子表格。我正在导入原始工作表的子集。我创建了一个新工作表并将数据列逐列复制到记事本,然后再删除新工作表中的链接。 链接中有一些东西导致了这个问题 BTW:这是一组数据,因为我已经从这个电子表格到这个数据库完成了这个导入序列超过50次。将数据减半用于第一个(较大的)一半数据,但不适用于第二个数据。

答案 8 :(得分:0)

嗨我在导入.xlsb文件时也遇到此错误。之后我将内容复制到另一个xlsx文件,然后导入这个xlsx文件。

答案 9 :(得分:0)

从XLSB文件导入时出现此错误,将文件另存为XLSX文件,然后导入,应该可以正常工作

答案 10 :(得分:0)

发现的另一个问题是excel文件是否保存为二进制excel工作表只是将其重新保存为excel工作簿并且加载正常。

答案 11 :(得分:0)

我有完全相同的错误。 电子表格是从另一个软件(SAP)创建的。由于它不是由Office创建的,因此Excel无法读取它(!?!)。 我必须在Excel中打开它们,保存它,然后在Access中加载它就可以了! 在最糟糕的情况下,假设您有几十个文件,您可以在导入之前通过VBA代码打开和关闭它们。

答案 12 :(得分:0)

我遇到了同样的问题,在Windows7中获得安全更新后发生此错误。我们有太多excel文件来执行打开/关闭操作,所以我决定尝试其他方式。

1-当Access工作正常时返回一个还原点:它在我的情况下不起作用。软件配置的唯一变化是安全更新,似乎安全更新仍然会导致问题。

2-减少行,列等:它对我不起作用;尝试访问的第一个文件有10k行,将这些行减少到3不是解决方案。

3-尝试修改连接字符串:它对我不起作用,也不是很合理;连接已经工作了多年,突然为什么会停止?在某些情况下,它确实发生但不是这次。

4-在我的情况下卸载最新的安全更新。这是卸载的安全更新。

Screen shot of uninstalled security update

祝你好运。

答案 13 :(得分:0)

解决Windows 7:

卸载安全更新KB4041681和KB4041678(与Excel和Jet / ACE提供商相关)

答案 14 :(得分:0)

解决此问题时对我有用的解决方案是在导入和导出时打开正在执行导入/导出的Excel文件。出口正在发生。

问题似乎是由CLatch阻止数据事务在CLOSED .xls文件和其他外部数据库应用程序之间发生引起的。打开excel文件解决了这个问题。

下面的一些示例代码示例突出显示哪些有效,哪些无效:

<强>失败

wbTarget.SaveAs strFilename, xlExcel8
wbTarget.Close    
ExportSheetToDB strFilename, strSheetName, "tblTemp"

<强> WORKS

wbTarget.SaveAs strFilename, xlExcel8
ExportSheetToDB strFilename, strSheetName, "tblTemp"
wbTarget.Close

答案 15 :(得分:0)

在我的情况下(我有同样的错误)问题是我的存储在网络驱动器上的Access数据库空间不足(没有足够的可用空间供导入完成) 。我释放了空间并压缩了数据库;错误没有再出现。