.net 通过MDX生成透视表

.net 通过MDX生成透视表,.net,excel,ssas,mdx,pivot-table,.net,Excel,Ssas,Mdx,Pivot Table,目标是将Excel单元格链接到SQL Analysis Server 2008 用户不希望使用Excel数据透视表连接到多维数据集,因为他们需要对数据进行计算。这会导致大量问题,在扩展和折叠透视表层次结构时,主要引用的单元格会变成Ref。我向他们展示了如何关闭+/-使其成为只读,但这并不理想 其次,我们不喜欢Pivot表生成工具,我们都更喜欢SQL 2005、2008中的多维数据集浏览器,它也是用OWC制作的 所以我有点为难。我一直在研究生成MDX的大量工具。有几位杰出人物是和的 我现在试图实现

目标是将Excel单元格链接到SQL Analysis Server 2008

用户不希望使用Excel数据透视表连接到多维数据集,因为他们需要对数据进行计算。这会导致大量问题,在扩展和折叠透视表层次结构时,主要引用的单元格会变成Ref。我向他们展示了如何关闭+/-使其成为只读,但这并不理想

其次,我们不喜欢Pivot表生成工具,我们都更喜欢SQL 2005、2008中的多维数据集浏览器,它也是用OWC制作的

所以我有点为难。我一直在研究生成MDX的大量工具。有几位杰出人物是和的

我现在试图实现的是用MDX设置Excel单元格。以下是方法:

Excel>数据选项卡>连接>连接到多维数据集 透视表,使用现有连接 向数据透视表添加数据 双击透视表中的某个值以向下钻取,将创建一个具有数据二维表示形式的新图纸。 数据选项卡>连接>选择excel为向下钻取创建的连接。 单击属性>定义,然后在命令文本字段>确定中粘贴MDX查询 这会用多维数据集数据填充单元格,但它只有一行,我不知道如何将其设置为多行和分层,请参见对话框后面的一行数据:

在生成MDX查询的工具中,它是多行的:

我知道这是一个长期的尝试,使这项工作,我怀疑它甚至可能,但我的想法的

我试过这个工具,它很糟糕,它的多维数据集浏览器与SQL多维数据集浏览器的工作方式不同,你只能添加列!这就像是向标准数据透视表倒退了一步

所以在这一点上,我不再试图在内置的Excel中找到一个好的Pivot表浏览器了——市场上似乎没有什么东西?这就是为什么我求助于第三方工具来获取MDX并通过VSTO以编程方式插入Excel

还有一件事我尝试了,但运气不佳,但我想提及的是:

不幸的是pvt.MDX属性是只读的


如果您来到这里,非常感谢您的阅读,欢迎您提出任何想法:

您可以构建一个Excel插件

此加载项可能基于连接多维数据集并使用自己的MDX查询对其进行查询


给定一个,您将能够提取给定的单元格,并将其插入Excel工作表中需要的任何位置。

Ranet PivotGrid可以在层次结构中显示未分组的数据 成员组模式 MDX查询结果可以导出到Excel。但是,它不会与数据公式相关联。处理Mdx查询并生成Excel文件可能是在代码中


感谢您的回答,请查看我的问答历史记录(带有Excel和VSTO标记)。我有一个在Ranet.Olap控件中捕获层次结构的扩展和折叠状态的策略。当WPF版本可用时,我将在VSTO控件中实现这一点。将有验证和刷新按钮,用于将多维数据集浏览器/数据透视表控件与SSA同步。您找到从MDX生成数据透视表的新方法了吗?
Private Sub Workbook_Open()
   Dim ptcon As CommandBar

   'See the following for list of menus in excel
   'http://support.microsoft.com/support/kb/articles/Q213/5/52.ASP
   'Title: XL2000: List of ID Numbers for Built-In CommandBar Controls
   Set ptcon = Application.CommandBars("PivotTable context menu")

insertDisplayMDX:
   Dim cmdMdx As CommandBarControl
   For Each btn In ptcon.Controls
       If btn.Caption = "MDX Query" Then GoTo doneDisplayMDX
   Next btn

   ' Add an item to the PivotTable context menu.
   Set cmdMdx = ptcon.Controls.Add(Type:=msoControlButton, temporary:=True)

   ' Set the properties of the menu item.
   cmdMdx.Caption = "MDX Query"
   cmdMdx.OnAction = "DisplayMDX"

doneDisplayMDX:

End Sub

'And this is the DisplayMDX subroutine, that you can insert in a separate module.

Sub DisplayMDX()
    Dim mdxQuery As String
    Dim pvt As PivotTable
    Dim ws As Worksheet

    Set pvt = ActiveCell.PivotTable
    mdxQuery = pvt.MDX

    ' Add a new worksheet.
    Set ws = Worksheets.Add
    ws.Range("A1") = mdxQuery
End Sub