Sql server 基于参数的excel文件动态创建

Sql server 基于参数的excel文件动态创建,sql-server,excel,reporting-services,ssis,vba,Sql Server,Excel,Reporting Services,Ssis,Vba,任务是:根据SQL查询返回的数据,分别为每个客户生成自动定期报告,并将其保存为一个单独的excel文件,名为customer_name+[YY-MM].xlsx(或一个带时间戳的excel文件,每个客户有单独的工作表) CustomerID可能每个月都会变化,目标客户列表是通过SQL查询生成的 最好的技术是什么?到目前为止已学习: SSIS:Excel文件或选项卡的名称应在控制流和数据流任务中预定义,并且不能动态设置。输出为非格式化csv(不好,但可以处理)。 Excel:我可以将所有客户的批量

任务是:根据SQL查询返回的数据,分别为每个客户生成自动定期报告,并将其保存为一个单独的excel文件,名为customer_name+[YY-MM].xlsx(或一个带时间戳的excel文件,每个客户有单独的工作表)

CustomerID可能每个月都会变化,目标客户列表是通过SQL查询生成的

最好的技术是什么?到目前为止已学习:
SSIS:Excel文件或选项卡的名称应在控制流和数据流任务中预定义,并且不能动态设置。输出为非格式化csv(不好,但可以处理)。
Excel:我可以将所有客户的批量数据嵌入Excel,但不确定是否可以编写一个宏来获取唯一的客户,创建相应的选项卡,并在每个选项卡中放入相应的数据。
SSRS:订阅功能在公司级别被禁用-无法使用:(尽管不确定它是否接受这样的动态参数)


我是否错过了任何选项?或者可能还有其他可用技术?

SSIS将是您的最佳选择,原因如下:

  • 如果模式数量有限,可以设置一组excel模板,然后使用SSI轻松填充和重命名模板
  • 如果您需要更好的控制,可以使用Interop和C#在Excel中执行几乎任何您想要的操作,但是这执行起来非常慢,构建起来非常耗时
  • 很容易在数据集(客户列表)上设置执行循环,并将他们需要的模板或选项卡作为数据集的一部分包括在内,这使得维护和添加新客户变得更简单,并且可能可以移动到业务端

  • 当然,SSIS也有一些缺点,例如在使用excel connector时很难让excel列格式相互配合,但它可能仍然是最好的选择。

    我将选择
    SSIS
    我也投票支持SSIS:)嗨,Eric,非常感谢您提供的信息丰富且详细的答案。我现在是这样看的:将densite_RANK()分配给每个客户,并基于此标记在SSIS数据流中执行条件拆分。正如您所提到的,这将适用于一定数量的模式,所以对于21世纪的客户来说,如果只创建20个模式,它将失败。然而,这已经是一个伟大的进步!是否可以为每个输出文件(或excel选项卡)指定客户名称?由于它们不是常量,我看不出是否/如何使用SSIS变量。任何到相关资源的链接都很好。虽然这可能会起作用,但我更希望有一个SP,它在任务循环中提取每个客户的数据,循环在客户列表上迭代。这样,循环可以在每次迭代中分配变量值,并且可以将输出文件名设置为其中一个变量。