SSIS – “外部表格不是预期的格式”和.xls文件

在一个SSIS ETL转换中,我试图加载一个.xls文件。 我有几个相同的文件具有相似的模式,并且他们都正常工作。 但是,这一个文件会引发“外部表格未处于预期的格式”错误。 这是我曾经试过的:

  • 我已经将连接string从Jet OLEDB更改为ACE OLEDB,但没有结果。
  • 我将Excel 97-2003的连接types更改为2007,没有结果。
  • 连接pipe理器正在使用一个variables,所以我试图让另一个直接加载文件的连接pipe理器。 没有结果。
  • 我正在使用SQL查询来从文件中读取,所以我试着读取文件的表单。 他们不加载。
  • 我试过“另存为…”并使用Excel 97-2003。
  • 我试着保存文件。
  • 我试过恢复原始文件。
  • 我检查了文件中的表单,并将它们与类似的文件进行比较。 至less两者都有相同的纸张。

但是,最让人沮丧的是,如果我在Excel中保持打开文件,而在SSIS中加载文件,则文件会正确加载。 作为附加信息:

  • 该文件具有macros,但其他文件也如此。
  • 我的电脑运行一个32位的架构。
  • 我正在使用Visual Studio 2010 + SQL Server 2012。

还有什么可以使这个错误触发?

编辑:现在我试图设置一个ADO.NET源和OLEDB源打开.xls文件。 ADO.NET不能“从列中检索信息”,并且OLEDB获取其连接closures。 也许有一种方法可以知道何时读取excel文件失败?

我也尝试了一些非常棘手的问题:我检查了事件遮阳板,发现有一些错误,所以我做了一个快速的谷歌search,并修复它。 它被链接到SSIS,但修复它并没有解决错误。

最后,我做了一些更简单的事情:我将这些文件转换为.xlsx,并将连接pipe理器设置为Excel 2007。 虽然我会标记另一个答案,如果它比我好,我会把这个留给其他有类似问题的人。