【问题标题】:Exporting data to Excel sheet without writing column names in SSIS将数据导出到 Excel 工作表而不在 SSIS 中写入列名
【发布时间】: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 吗?

标签: excel ssis


【解决方案1】:

简短而甜蜜的答案是否定的。不可能。它总是需要使用一些东西来使它与众不同。你可以做的是,使用一个小的 poweshell 脚本打开 excel 文件,运行一个小宏来删除第一行,然后保存并关闭它。有很多 powershell 脚本可以帮助你解决这个问题。

【讨论】:

  • 谢谢。问题是我需要覆盖工作表,但我只能通过首先创建一个执行DROP TABLE [MySheet] 的 SQL 任务然后继续插入来自数据流任务的数据来做到这一点。采用此路径时,SSIS 将第一行留空,而不是像不需要放下工作表时那样写入列的标题。有没有其他选择?
  • 对不起,这里有点混乱。您在最初的问题上说您根本不想要标题为“myColumn”的第一行。这不是你打算做的吗?您能否更详细地解释一下您目前拥有什么以及您正在努力实现的目标?
  • 我不想要第一列中的标题,因为当我截断表格并重新加载它时,它不再显示了。我会编辑我的帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多