2011-05-10 51 views
2

我需要创建一个生成Excel文件的T-SQL作业。现在我正在使用sp_makewebtask存储过程,但它不支持指定颜色。如何将查询结果放入带有彩色列的Excel文件中?

编辑:废话。我需要Excel文件中的行级颜色。

+0

+1用于指向我可以非常有用的轻型报告需求的sproc。是否可以让Excel文件提取数据,而不是让SQL推送文件?您可以使用Excel宏进行格式化。如果是我,我会尽量避免将这种逻辑放入数据库中。 – 2011-05-10 15:59:55

+0

我需要将它放在存储过程中,以便我可以使用它在计划作业中使用。 – john2x 2011-05-10 16:54:10

+0

将数据输入到格式良好的Excel文件中的预定SSIS作业如何?我使用类似的设置,并有一些注意事项,它运作良好。如果这听起来像是一种可能性,我会发布一个更完整的答案。如果你绝对必须在sproc中处理它,我认为CLR可能是你唯一的选择。 – 2011-05-10 17:00:30

回答

1

对于您的特定任务,CLR可能是最简单的方法。不过,我还没有使用它多年,所以我会提供一些关于SQL Server集成服务的提示。

SSIS是一个很大的话题,它有一些令人发狂的缺陷,但是如果你经常需要定期移动数据,值得投资去学习它。首先,如果您拥有MS SQL许可证,则包含SSIS。

要将数据从SQL传输到Excel文件,您需要在工作簿中添加一个选项卡以接收数据。使用所有格式和公式创建此工作簿的副本,但不包含数据;我们称之为“模板”。复制这个工作簿,我们将调用第二个文件“Working”。当您的SSIS包将来运行时,它将修改工作文件,但保留模板不变。

  • 用Visual Studio创建商业智能工作室一个新的SSIS项目。
  • 在连接管理器下,为模板添加文件连接,为工作添加一个连接。为您的源数据库添加一个SQL连接,并为工作添加一个Excel连接。请注意,工作出现两次:一次作为文件,一次作为Excel“数据库”。
  • 在您的工具箱中,将文件系统任务拖放到您的项目中,并将其属性设置为将模板复制到工作文件,因此您将从一个干净的平板开始。一定要检查“覆盖目的地”。
  • 接下来,添加一个数据流任务。在此任务中,您将转到Toolbox并添加“OLE DB Source”(或您为SQL选择的任何驱动程序),数据流转换“数据转换”和数据流目标的数据流源“Excel目标”。
  • 拖动箭头将SQL源连接到数据转换步骤,并将数据转换步骤连接到Excel。
  • 打开您的SQL源的属性,并设置要使用的特定连接(您在步骤2中创建的连接),然后选择源表,视图或查询。
  • 打开数据转换步骤。它会显示您在上一步中包含的字段。如果您有任何CHAR或VARCHAR字段,则需要将它们添加到此处显示的列表中,并将它们转换为Unicode - Excel似乎需要这样做。
  • 在Excel中,将上一步中的字段映射到数据选项卡中的列。请务必使用Unicode文本字段,而不是原始的CHAR/VARCHAR字段。

这应该包括基本知识。你可能会想要浏览一个教程。如果具体的事情给你带来麻烦,那么SO可能会有帮助。祝你好运!

+0

已使用'sp_makewebtask'的模板结束,但感谢您的介绍。此方法是否也可以在Excel文件中添加选项卡/表单? – john2x 2011-06-01 15:55:01

+0

@ John2x:否,SSIS只能读取或写入现有选项卡;通常情况下,你会确保你的模板具有第一个。但是,您可以包含几乎可以执行任何操作的C#脚本,例如将选项卡动态添加到Excel中。您也可以为SSIS编写自定义数据源,转换和目的地 - 但这可能更多的是您现在想要跳转到的地方。 – 2011-06-01 16:34:35

相关问题