【问题标题】:Create Graphs automatically out of the excel generated via SSIS?从通过 SSIS 生成的 excel 中自动创建图表?
【发布时间】:2014-09-23 02:51:15
【问题描述】:

我有以下要求,

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

我决定做以下事情

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

第1点和第2点,我已经完成了。

在活动 1 和 2 之后,我将在 excel 中显示如下内容

工作簿1:

Date | Column A | Column B | Column C |

10-7-14 | 0983883 | 09433344 | 4443333 |

11-7-14 | 0986444 | 06875544 | 4689073 |

我真的不能做活动 3。活动 3 必须从上表中获取值并在工作簿 2 中创建图表

我知道它可以通过 SSRS 完成,但我想知道其他方式,因为我们只有 SSIS,而 SSRS 完全超出了范围。由于某些原因,SSRS 仅限在我们的系统中使用。

我尝试了各种方法来做到这一点。 (在 SSIS 的 excel 模板的 workbook2 中创建了一个动态图,并让传输到 workbook1 的值呈现该图,但它不能正常工作。)。我无法使用提供给 SSIS 的空 Excel 模板创建动态图表。

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

我也可以选择 VBA 宏选项,(例如创建一个按钮并让用户单击该按钮以生成图形)但我不确定它是否可行?

请Excel专家帮忙!

我可能听起来像个业余爱好者,但请原谅我,因为我是 SSIS 的新手,我的同事都不知道如何做,而且我所做的研究无法得到任何结果,这有点虽然令人沮丧。

【问题讨论】:

    标签: sql-server excel reporting-services ssis vba


    【解决方案1】:

    由于我不知道您的工作簿结构的细节,您可能需要调整以下 vba 代码(正如子名称所暗示的,这应该放在工作簿的 Open 事件中):

    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 中并从单元格 A1 开始,而您的图表(图表 1)在 Sheet2 中。

    【讨论】:

    • 非常感谢。我一定会试试的。
    【解决方案2】:

    我在工作中做了类似的事情,但我使用 excel 作为 SSAS 的前端,但这个概念对于 sql server 是相似的。

    听起来您会发现 Excel 中的数据透视图很有用。这是因为 Excels 会根据数据透视表的结果动态呈现图表。
    请注意,数据透视表允许过滤,因此这意味着用户可以过滤掉他们不需要的部分数据。或者如果用户想要改变图表的外观,例如按月销售而不是按季度销售,这对他们来说非常容易。所以基本上结果的展示是在 excel 中动态完成的。

    要根据外部数据创建一个,请执行以下操作: 数据 --> 来自其他来源 excel 可以查询 sql server,尽管您可能希望将结果集限制为一个小的只读表以进行报告。 请注意,数据源信息保存在文件中,excel 可以使用硬编码的用户名和密码或窗口的域登录。理想情况下,您希望通过通用用户名和密码使用域登录

    所以解决方案变得更像下面这样:

    1. SP 或 SSIS 填充表格以供 Excel 查询。这意味着 excel 只是编写简单的选择和分组方式
    2. 使用数据 --> 来自其他来源 --> 来自 SQL 服务器
    3. 创建股票数据透视表,它将处理数据的呈现
    4. 将文件提供给用户。该文件将包含已定义的数据源
    5. 然后他们只需点击刷新,这将重新向服务器查询结果。
    6. 用户可以拖放字段,从而更新数据透视表并重绘 Excel 图表

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

    【讨论】:

    • 谢谢,但我什至可以将它交给不在网络中的人。假设有人从家里访问,他没有网络到办公室的 sql 服务器。所以他们不会与后端表建立连接。在这些情况下,你认为这个解决方案会起作用吗?
    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多