【发布时间】:2017-01-20 15:40:30
【问题描述】:
我有这个问题。我必须动态创建一个 Excel 2007 文件。为此,我有一个未选中“第一行是列名”检查的 Excel 连接。然后我使用该 Excel 连接和以下 SQL 语句创建了一个 SQL 任务:
CREATE TABLE `MySheet` (`MyColumn` LongText)
然后我有一个数据流任务,它用单列数据流填充工作表。
问题是即使我取消选中“第一行是列名”检查,导出仍然在第一行写入“MyColumn”。我需要能够从第一行开始导出数据,而不需要在上面写任何其他内容。
这是一个问题,因为 Excel 文件可能必须在不同的运行中被 SSIS 包覆盖。由于我们在创建文件的文件夹中没有删除许可,因此我需要从上一次运行中删除工作表的内容。我设法使用 SQL 任务和带有语句的 Excel 连接来做到这一点:
DROP TABLE [MySheet]
这可以在不删除工作表的情况下擦除每一行。但是,由于此任务之后是数据流任务而不是工作表创建任务(因为工作表仍然存在),因此当数据流任务再次填充行时,它将第一行留空。它不会重写列名。
我试图避免这种差异。
有什么办法可以避免吗?
谢谢
【问题讨论】:
-
这更有意义。老实说,我以前没有遇到过这样的问题。当我动态创建 excel 文件时,我的任务是将旧文件移动到存档文件夹,然后创建一个新文件并用新数据填充它。但是还没有对现有的进行重写。让我试着读一读这方面的内容。
-
如果您还没有这样做,您可以尝试 DELETE * FROM [mySheet$] 来代替 Drop table 吗?