自动生成通过SSIS生成的Excel中的图表?

我有以下要求,

SQL Server 2008计划作业在早上9点运行。 这个工作应该发送一个工作簿(工作簿1)中的数据和下一个工作簿(工作簿2)中附带的图表的电子表格。 数据必须具有来自SQL表的值。 图表必须反映工作簿1中的值。 这张表应该邮寄给n个用户。 n个用户甚至不知道sql服务器,不知道服务器的用户名和密码。 他们必须只有两个工作簿的电子表格。

我决定做下面的事情

1)创build一个将数据格式化成表格的存储过程2)调用一个SSIS,将数据复制到excel的workbook1中3)在同一个excel的workbook2中创buildGraph

第一点和第二点,我已经完成了。

活动1和2之后,我会在excel下面有一些东西

Workbook1:

Date | Column A | Column B | Column C | 10-7-14 | 0983883 | 09433344 | 4443333 | 11-7-14 | 0986444 | 06875544 | 4689073 | 

我真的不能够做这个活动3.活动3必须从上面的表中取得值,并在工作簿2中创build图表

我知道可以用SSRS来完成,但是我想知道其他的方法,因为我们只有SSIS,而SSRS完全不在范围之内。 由于某些原因,SSRS被限制在我们的系统中使用。

我已经尝试过不同的方式来做到这一点。 (在SSIS的excel模板的workbook2中创build了一个dynamicgraphics,并将值传输到workbook1呈现graphics,但不能令人悲伤)。 我无法使用提供给SSIS的空的Excel模板创builddynamicgraphics。

Excel是这里的问题,它不允许任何预定义的graphics。 它总是期望创造一个图表的价值。

我也可以去一个VBA的macros选项,(如创build一个button,让用户点击button来生成图表),但我不确定是否是一个可行的?

Excel专家请帮忙!

我可能听起来像是一个业余爱好者,但请原谅我,因为我是SSIS的新手,没有一位同事知道如何去做,而且我所做的研究也得不到什么结果,这有点令人沮丧。

由于我不知道工作簿结构的具体情况,因此您可能需要修改以下vba代码(因为子名称暗示应放置在工作簿的“打开”事件中):

 Private Sub Workbook_Open() Dim wb As Workbook Dim ws As Worksheet Dim ws2 As Worksheet Dim LastRow As Long Dim LastColumn As Long Dim LastColumnLetter As String Set wb = ThisWorkbook Set ws = wb.Worksheets("Sheet1") Set ws2 = wb.Worksheets("Sheet2") Application.ScreenUpdating = False LastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row LastColumn = ws.Cells(2, Columns.Count).End(xlToLeft).Column LastColumnLetter = Chr(LastColumn + 64) ws2.Activate ws2.ChartObjects("Chart 1").Activate ActiveChart.SetSourceData Source:=ws.Range("A1:" & LastColumnLetter & LastRow) ws2.Range("A1").Select Application.ScreenUpdating = True End Sub 

此代码在工作簿打开时执行,并首先尝试查找数据表占用的范围,然后更新图表的数据源。 我假定您的数据在Sheet1中,并从图表1开始,而您的图表(图1)在Sheet2中。

我做了类似的工作,但使用Excel作为SSAS的前端,但概念是相似的SQL服务器。

这听起来像你会发现Excel中的数据透视图有用。 这是因为excel基于数据透视表的结果dynamic呈现图表。
请注意,数据透视表允许过滤,因此这意味着用户可以过滤出不需要的部分数据。 或者,如果用户想要改变图表的外观,例如按月销售,而不是按季度销售,那么他们很容易做到。 所以基本上这个结果是在excel中dynamic的完成的。

要创build一个基于外部数据的数据,请执行以下操作:数据 – >来自其他数据源尽pipe您可能希望将结果集限制为小型只读表进行报告,但可以使用Excel查询SQL Server。 请注意,数据源信息保存到文件中,Excel可以同时使用硬编码的用户名和密码或窗口的域login名。 理想情况下,您想通过一般用户名和密码使用域名login

所以解决scheme变得更像以下内容:

  1. SP或SSIS来填充表来查询excel。 这意味着excel只是写简单的select和分组
  2. 使用数据 – >从其他来源 – >从SQL服务器
  3. 创build股票数据透视表,它将处理数据的表示
  4. 给用户提供文件。 该文件将具有定义的数据源
  5. 然后,他们只是刷新,这将重新查询服务器的结果。
  6. 用户可以拖放字段,更新数据透视表并重绘Excel图表

唯一的缺点是用户只能看到当前数据集的副本。