除非手动保存,否则无法使用 SSIS 打开 excel 文件

Posted

技术标签:

【中文标题】除非手动保存,否则无法使用 SSIS 打开 excel 文件【英文标题】:Can't open excel file with SSIS unless it is manually saved 【发布时间】:2015-02-10 05:07:21 【问题描述】:

我在使用 SSIS 处理 excel 文件时遇到问题,除非我手动打开文件并单击“保存”。 我注意到文件是 .xls 还是 .xlsx 并不重要

文件从 s-s-rS 项目下载到 excel 我可以使用文件系统任务来移动、重命名、删除文件等,但是当我尝试使用数据流任务访问文件内的内容时,我收到一个错误,即外部表不是预期的格式。 然后我必须打开文件,单击保存,文件处理正常。

不确定这是否意味着...... 我注意到当我在记事本中打开原始文件时,第一行包括:

xl/workbook.xml

保存文件后,第一行更改为:

[Content_Types].xml

使用 Microsoft Visual Studio 2012。

错误:

错误:TransferMoneyReconcile 中的 0xC0202009,连接管理器“Excel 连接管理器”:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。来源:“Microsoft Office Access 数据库引擎”Hresult:0x80004005 描述:“外部表不是预期的格式。”。

Excel 连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\192.168.234.567\ftp\Sample\Money\Archive_Transfer Money to Manager.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=NO";

感谢任何帮助/建议! 谢谢! 史蒂文

【问题讨论】:

我很好奇 - 为什么要导出到 excel 然后使用 SSIS 取回以从中移动数据?为什么不使用报告使用的原始数据源? 另外,你能发布你得到的确切错误吗? 我们的客户下载带有某些输入参数(更新某些列)的报告并将它们放在 FTP 上供我们提取和处理,这反过来又会触发其他更新。有时他们必须进入并编辑某些内容并且文件处理正常,因为他们编辑/保存它,但有时一切都很好,但他们仍然必须打开文件并保存它以便我们能够处理。错误添加到原始帖子。 我正在考虑让脚本任务尝试打开文件并重新保存它,但我找不到足够好的示例来尝试。 尝试将数据流任务的延迟验证属性设置为 true。我在使用 SSIS 和 Excel 时遇到了一些奇怪的错误,这些错误已经为我解决了。 【参考方案1】:

XLSX 扩展有 2 种类型。

    Excel 工作簿(我们称这种类型为 1)

    严格的 Open XML 电子表格(我们称这种类型为 2)

以上两者都有 .xlsx 扩展名。

要亲自查看,您可以打开 excel 应用程序,创建一个新文件,单击保存并注意类型 1(位于列表顶部)和类型 2(位于列表底部)。

默认选项是类型 1 - Excel 工作簿。因此,当您创建一个新文件并保存时,它将被保存为类型 1。

然而,根据我的测试,当您打开类型 2 文件并保存时,它可能会保存为类型 1 或类型 2。不能保证这种行为。

无论如何,要解决您面临的错误,请打开文件并保存(通过另存为)并选择类型 1 格式。然后测试 SSIS,它应该可以正常运行。

【讨论】:

【参考方案2】:

这可能会更清楚地说明它。问题仍然存在:

为什么 s-s-rS 不能以标准 Excel 工作簿格式输出? 为什么 SSIS 不能加载 Strict Open XML 电子表格格式?

【讨论】:

以上是关于除非手动保存,否则无法使用 SSIS 打开 excel 文件的主要内容,如果未能解决你的问题,请参考以下文章

除非选择了项目,否则Visual Studio不会保存构建更改

构建:除非提供“--jsx”标志,否则无法使用 JSX

VSTO SaveAs 文件被锁定

除非手动执行,否则 Elastic Beanstalk 上的“npm install”会失败

除非在视图上手动更新,否则不会自动触发视图上的更新触发器

除非使用 turbolinks 和 rails 4 重新加载页面,否则 javascript 不会执行