自动生成通过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变得更像以下内容:
- SP或SSIS来填充表来查询excel。 这意味着excel只是写简单的select和分组
- 使用数据 – >从其他来源 – >从SQL服务器
- 创build股票数据透视表,它将处理数据的表示
- 给用户提供文件。 该文件将具有定义的数据源
- 然后,他们只是刷新,这将重新查询服务器的结果。
- 用户可以拖放字段,更新数据透视表并重绘Excel图表
唯一的缺点是用户只能看到当前数据集的副本。
- Vbs Excel公式将目标公式复制到当前单元格
- select独一无二,和一个双打
- 使用数组的Excel VBA编程:传递它们还是不传递它们?
- 基于工作表更改运行macros(单元格包含公式)
- 我将如何去检查列中的每个单元格是否包含来自另一列的单元格中的任何文本string?
- Activeadmin与activeadmin-axlsx gem,获取bin / rails:6:警告:已经初始化常量APP_PATH错误
- 如果不在两个值之间而不是空白,则更改单元格的背景颜色
- 通过C#打开Excel,然后允许用户手动closuresExcel
- 如何在Visual Basic for Applications中使用“类模块”或“模块”?