在SSIS ETL转换中,我试图加载某个 .xls 文件。我有几个相同的文件,拥有类似的模式,所有这些文件都可以正常工作。但是这一个文件却出现了"外部表格不符合预期格式"的错误信息。以下是我尝试过的方法:
- 我已经将连接字符串从 Jet OLEDB 改为 ACE OLEDB,但没有结果。
- 我将连接类型从 Excel 97-2003 改为 2007,没有结果。
- 连接管理器正在使用变量,因此我尝试创建另一个直接加载文件的连接管理器。依然没有结果。
- 我正在使用 SQL 查询来读取文件,所以我尝试读取文件中的工作表,但它们无法加载。
- 我尝试使用 "另存为" 功能,并使用 Excel 97-2003。
- 我尝试重新保存文件。
- 我尝试恢复原始文件。
- 我检查了文件中的工作表,并将它们与一个可以加载的类似文件进行了比较。至少两个文件具有相同的工作表。
但更奇怪的是,如果我在 SSIS 中加载文件时仍然将其保持在 Excel 中打开,则文件会正确加载。以下是一些额外的信息:
- 该文件具有宏,但其他所有文件也都是如此。
- 我的计算机运行 32 位结构。
- 我使用的是 Visual Studio 2010 + SQL Server 2012。
还有什么原因会导致这个错误触发?
编辑:现在我尝试为打开 .xls 文件设置了一个 ADO.NET 源和一个 OLEDB 源。ADO.NET 无法"检索列信息",而 OLEDB 连接会被关闭。也许有一种方法可以知道何时读取 Excel 文件失败?
我还尝试了一些非常棘手的方法:我检查了事件查看器,并注意到出现了一些错误,所以我进行了快速的 Google 搜索并解决了问题。它与 SSIS 有关,但修复它并没有解决错误。