导出到Excel将在标题后留下一个空行(但只有在导出一列时才可以)!

我有以下问题。 我正在通过SSIS从SQL Server导出到Excel 2003文件( 必须是 Excel 2003)。 它首先通过SQL Task创build一个工作表,然后用SQL数据stream填充它。 Excel连接指定第一行具有列名称。

我遇到的问题是,当工作表只有一列时,SSIS开始写入不在第2行,而是第3行。

这是创build工作表的SQL脚本:

CREATE TABLE `Sheet1` (`Column` LongText) 

和填充它的脚本:

 SELECT socialSecNum FROM Users 

如果我添加一个名为“。”的虚拟列,并在DataFlow中填充空白,它不会跳过该行,并开始在第2行中写入。

在这种情况下创build工作表的SQL任务脚本是:

 CREATE TABLE `Sheet1` (`Column` LongText, `.` LongText) 

这是两个屏幕截图中填充Excel文件的相同的SQL脚本。 输出不会改变,所以在开始处没有随机插入NULL值。

到底是怎么回事? 我如何避免它? 我不能有这个“。” 列名在那里。

编辑:另外请注意,这不是说,Excel文件是肮脏的,这就是为什么它留下第2行中的空行,因为它认为它正在使用; 如果我在脚本中添加第二列,相同的文件不会跳过一行。

编辑2:我被要求删除的图片,对不起。

我终于能够复制你的空白行的问题和您的修复与额外的列。 最后,我无法回到没有得到空白行,直到我与实际打开的文件导出。 是的这是正确的, 当文件实际上打开在Excel中,而SSIS包写入时,我没有空白行 ,这显然不是一个解决scheme或一个好的。

疯….

在我做的所有testing(很多)我会说我得到了一些不一致的结果使用您的SQL任务创build表。 如果一个同名的工作表已经存在了一段时间,它会覆盖那里的东西,但是大部分时间我会得到一个新的工作表。 所以,当你创buildSheet1并且它存在时,你的表格被创build为Sheet11 ….因为你一起删除工作簿,你可能没有看到任何奇怪的行为。

在互联网上快速search显示,这是一个普遍的问题,97 – 2003年。 所以你可以做的事/尝试:

  • 切换到CSV但名称扩展名为.xls文件,它仍然会在Excel中打开,没有格式化等,但用户可能会在打开文件时得到警告。
  • 添加列,然后添加另一个sql任务,以填充它后,我没有成功,但我不这样做在Excel中,所以我可能只是不知道某个命令。
  • 添加另一个SQL任务来删除空行,我再次没有成功,但我不经常写Excel的查询。