【发布时间】:2022-02-16 22:11:12
【问题描述】:
我创建了一个包来从两个 SQL Server 表中获取数据,并使用合并连接合并这些数据,然后将结果存储到 Excel 目标中。
第一次很好用。第二次将重复数据存储在 Excel 文件中。
如何覆盖 Excel 文件行?
【问题讨论】:
-
您想始终创建新文件,还是:插入新行、删除不存在的行并更新目标 excel 中的现有行?
标签: ssis
我创建了一个包来从两个 SQL Server 表中获取数据,并使用合并连接合并这些数据,然后将结果存储到 Excel 目标中。
第一次很好用。第二次将重复数据存储在 Excel 文件中。
如何覆盖 Excel 文件行?
【问题讨论】:
标签: ssis
是的,可能!
解决办法如下:
首先转到您的 Excel 目标单击 Excel 工作表名称旁边的新建按钮,复制其中的 DML 查询。 然后将执行 SQL 任务放入您的控制流并将其连接到包含 Excel 目标的数据流。将连接类型设置为 Excel,将连接设置为 Excel 目标的 Excel 连接管理器,转到 SQL 语句并键入:
Drop TABLE `put the name of the sheet in the excel query you just copied`
Go
最后将查询粘贴到它之后。
这就是解决问题所需要做的一切。
您可以参考此链接获取完整信息: http://dwhanalytics.wordpress.com/2011/04/07/ssis-dynamically-generate-excel-tablesheet/
【讨论】:
很遗憾,Excel 连接管理器没有允许覆盖数据的设置。您需要使用控制流中的文件系统任务设置一些文件操作。
有多种可能性,这里是其中之一。您可以创建一个模板文件(仅包含带有标题的工作表)并在数据流转换之前文件系统任务将其复制到先前导出的文件中。
【讨论】:
【讨论】:
对于 Excel,它将附加数据。没有这样的选项可用于覆盖数据。
您必须通过文件系统任务删除并重新创建文件。
【讨论】:
使用带有平面文件连接管理器的 CSV 文件可以达到覆盖的目的。
【讨论】:
对我来说最好的解决方案是使用文件系统任务从模板中删除和重新创建 Excel 文件。
我试图做的是向每位员工发送一份带有 Excel 附件的报告,格式相同但数据不同。在每个员工的 foreach 容器中,我获取所需数据、创建 Excel 文件并发送附有 Excel 文件的邮件。
我先:
然后在foreach容器中:
【讨论】: