除非手动保存,否则无法使用 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不会保存构建更改