从Excel导入数据到SQL Server表格

7

我正在尝试将Excel文件中的数据导入SQL Server表。但是出现了这个错误:"外部表格格式不符合预期(Microsoft Office Access Database Engine)"。我使用的是Microsoft SQL Server 2012和Excel 2007。我尝试了Microsoft SQL Server导入和导出向导。然后我选择Microsoft Excel作为数据源,选择文件名并选择Excel的版本。然后我收到了上述错误消息。


2
你是如何导入的?通过向导吗?选择了“Excel源”吗?我们需要更多信息。 - Kris Gruttemeyer
Access怎么会介入其中呢?我以为你是在从Excel导入数据到SQL呢? - Sean Lange
请将Excel电子表格列导入SQL Server数据库。如果您使用向导,请确保具有数据类型、长度和正确的Jet引擎。 - bumble_bee_tuna
10个回答

6

将其用不同的名称保存为最新的 xlsx 版本。如果您认为没有更改任何内容,请不要担心,它实际上已经更改了。然后尝试导入新文件。


1
当您将HTML另存为Excel时,可能会出现此问题。通过“另存为”操作,文件将以真正的Excel格式保存。谢谢,这对我很有效。 - Ali Mirzaie

5

发现问题与Excel文件有关。在打开Excel文件之前,我收到了这个错误信息:“您要打开的文件.xls与文件扩展名指定的格式不同。在打开文件之前,请验证文件未损坏且来自可信任的来源。” 打开文件后,复制其内容并创建一个新的Excel文件。然后,我使用此文件在向导中进行导入。我将Microsoft Excel指定为源文件,文件名和Microsoft Excel 2007作为版本。 对于目标,我选择了SQL Server Native Client 11.0、服务器名称和数据库。我选择编辑映射以将Excel表格和目标表格之间的字段进行映射。运行向导后,它会将数据传输到SQL Server中的目标表格。


2
三年后,这节省了我数小时的挫败感 :-) - Chris
7年零7个月后,这让我在转圈一个小时后得以节省时间。 - Tanaka Mawere

2
另一个回答这个问题的方法(就像我遇到的情况一样)是只有当我打开要导入到数据库中的同一个Excel文件时才能正常工作。这是因为我们公司使用了一种名为NASCA的软件进行加密,关闭文件后,它将被加密并且无法被SQL Server Management Studio等软件读取。因此,在导入期间请尝试保持文件处于打开状态,这可能会有所帮助。

1
在我的情况下: 将扩展名从.xlsx改为.xls,然后继续打开文件就像魔法一样奏效。 - Rao Farhan

1

检查确保Excel工作簿没有密码(如果有,删除它)。我曾经遇到同样的错误,这个方法解决了问题。


1
你应该将Excel文件另存为较低版本,可以是2003版的Excel。保存文件后,现在可以进行SQL数据传输。
基因

0

我遇到了一个问题,涉及到一个xsls文件(Excel 2007)。向导正确识别了版本,但是出现了“格式不符合预期”的错误。

我不确定错误的来源是什么 - 我怀疑电子表格中存在无效的链接或引用。

我复制了我感兴趣的工作表的内容,并将其粘贴到一个新的空白工作表中。我保存了它,然后在导入向导中打开它,没有遇到任何导入问题。


0
我的问题是我的Excel表格没有定义命名范围。一旦我在Excel文件中创建了一个命名范围,我就能够导入它了。

0
在我的情况下,当一次性从三个工作表中导入数据时,我遇到了这个错误。然后我只选择了一个工作表,它就起作用了。接着我选择了另外两个工作表,它们也起作用了,所以有时候你可能只想单独导入工作表或者再给它一次机会。这可能会帮助到某些人。

0
我发现问题是Excel表格的格式为.xls,而我使用的是Excel 2010和SQL Server 2014,所以解决方案就是将电子表格简单地转换为.xlsx,然后再次运行向导,选择Excel作为数据源,自动选择Excel 2007作为数据源的Excel版本,这样向导就可以顺利运行了。
因此,无需将表格内容复制到新的电子表格中。
希望能对大家有所帮助!

0
今天我遇到了这个问题,我确定是由于第一张表开头的一个图形引起的。由于我只关心第三张表,所以我删除了前两张表,然后错误就消失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接